Ich versuche, zwei Ebenen Gleichungen aus den Daten von zwei dicom Bildern zu berechnen und eine Schnittlinie aus diesen beiden Ebenen Gleichungen zu erhalten. Das dicom-Tag ImagePositionPatient hat drei Koordinaten x, y, z und das Tag ImageOrientationPatient hat zwei Vektoren mit jeweils drei Komponenten. Wie Gleichung der Ebene kann mit diesen drei Koordinaten und zwei Vektoren berechnet werden?Wie berechnen Ebenengleichung mit drei Punkten und zwei Vektoren?
Dies ist mein Code:
public void ShowLocalizerLine(View v)
{
//Getting The Values
InfoOfFirst(); //This gets the img position and orientation of src img
InfoOfSecond(); //This gets the img position and orientation of dst img
String[] src_position_array = new String[3];
src_position_array = firstimg_position.split("\\\\");
Src_Position_Xo = Float.parseFloat(src_position_array[0]);
Src_Position_Yo = Float.parseFloat(src_position_array[1]);
Src_Position_Zo = Float.parseFloat(src_position_array[2]);
String[] src_orientation_array = new String[6];
src_orientation_array = firstimg_orientation.split("\\\\");
Src_Orientation_Vector1_A = Float.parseFloat(src_orientation_array[0]);
Src_Orientation_Vector1_B = Float.parseFloat(src_orientation_array[1]);
Src_Orientation_Vector1_C = Float.parseFloat(src_orientation_array[2]);
Src_Orientation_Vector2_D = Float.parseFloat(src_orientation_array[3]);
Src_Orientation_Vector2_E = Float.parseFloat(src_orientation_array[4]);
Src_Orientation_Vector2_F = Float.parseFloat(src_orientation_array[5]);
String[] dst_position_array = new String[3];
dst_position_array = secimg_position.split("\\\\");
Dst_Position_Xo = Float.parseFloat(dst_position_array[0]);
Dst_Position_Yo = Float.parseFloat(dst_position_array[1]);
Dst_Position_Zo = Float.parseFloat(dst_position_array[2]);
String[] dst_orientation_array = new String[6];
dst_orientation_array = secimg_orientation.split("\\\\");
Dst_Orientation_Vector1_A = Float.parseFloat(dst_orientation_array[0]);
Dst_Orientation_Vector1_B = Float.parseFloat(dst_orientation_array[1]);
Dst_Orientation_Vector1_C = Float.parseFloat(dst_orientation_array[2]);
Dst_Orientation_Vector2_D = Float.parseFloat(dst_orientation_array[3]);
Dst_Orientation_Vector2_E = Float.parseFloat(dst_orientation_array[4]);
Dst_Orientation_Vector2_F = Float.parseFloat(dst_orientation_array[5]);
//Calculations
float dst_nrm_dircos_x = Dst_Orientation_Vector1_B*Dst_Orientation_Vector2_F - Dst_Orientation_Vector1_C*Dst_Orientation_Vector2_E;
float dst_nrm_dircos_y = Dst_Orientation_Vector1_C*Dst_Orientation_Vector2_D - Dst_Orientation_Vector1_A*Dst_Orientation_Vector2_F;
float dst_nrm_dircos_z = Dst_Orientation_Vector1_A*Dst_Orientation_Vector2_E - Dst_Orientation_Vector1_B*Dst_Orientation_Vector2_D;
float src_pos_x = Src_Position_Xo - Dst_Position_Xo;
float src_pos_y = Src_Position_Yo - Dst_Position_Yo;
float src_pos_z = Src_Position_Zo - Dst_Position_Zo;
float dst_pos_x = Dst_Orientation_Vector1_A*src_pos_x + Dst_Orientation_Vector1_B*src_pos_y + Dst_Orientation_Vector1_C*src_pos_z;
float dst_pos_y = Dst_Orientation_Vector2_D*src_pos_x + Dst_Orientation_Vector2_E*src_pos_y + Dst_Orientation_Vector2_F*src_pos_z;
float dst_pos_z = dst_nrm_dircos_x*src_pos_x + dst_nrm_dircos_y*src_pos_y + dst_nrm_dircos_z*src_pos_z;
}
Ist das wirklich eine Programmierfrage oder eher für Math.SE geeignet? – paisanco
@paisanco es ist mit Mathematik verbunden, aber die Aufgabe muss in Android App (Java) –
getan werden Sie brauchen nur zwei Vektoren, um die Ebenengleichung zu berechnen - seine normale und eine Position; Was sind die 5 Vektoren, die du präsentiert hast? haben sie variable Namen, die auf ihren Zweck hindeuten? –