두 줄이 있습니다. 두 줄은 X와 Y의 두 점을 포함합니다. 이것은 둘 다 길이를 가지고 있음을 의미합니다.2 라인의 교차점에 대한 알고리즘?
나는 2 개의 수식을 봅니다. 하나는 행렬식을 사용하고 다른 하나는 정규 대수를 사용합니다. 어느 것이 가장 효율적으로 계산되며 공식은 어떻게 생겼습니까?
코드에서 행렬을 사용하는 데 어려움을 겪고 있습니다.
이것은 내가 지금까지 가지고있는 것보다 효율적 일 수 있습니까?
public static Vector3 Intersect(Vector3 line1V1, Vector3 line1V2, Vector3 line2V1, Vector3 line2V2)
{
//Line1
float A1 = line1V2.Y - line1V1.Y;
float B1 = line1V2.X - line1V1.X;
float C1 = A1*line1V1.X + B1*line1V1.Y;
//Line2
float A2 = line2V2.Y - line2V1.Y;
float B2 = line2V2.X - line2V1.X;
float C2 = A2 * line2V1.X + B2 * line2V1.Y;
float det = A1*B2 - A2*B1;
if (det == 0)
{
return null;//parallel lines
}
else
{
float x = (B2*C1 - B1*C2)/det;
float y = (A1 * C2 - A2 * C1)/det;
return new Vector3(x,y,0);
}
}
수식을 쓰고 수학, 코드가 없으면 코드를 표시 한 다음 문제가있는 부분을 알려주십시오. – atk
당신은 O (1) 알고리즘을 사용합니다. 그래서 당신이 정말로 효율성을 찾고 있는지 확신하지 못합니다. 실제로 그렇다면 어떤 코드가 다른 코드보다 효율적이지 않은지 알아보기 위해 코드를 프로파일 링 해 보셨습니까? 당신이 비효율적 인 것을보기 위해 당신의 프로그램의 다른 부분들에 대해 점검해 보았습니까? 효율성 (메모리, 속도 등의 크기)을 어떻게 정의합니까? 또는, 당신이 matricies에 대해서 이야기하기 때문에, 임의의 차원의 선을 가진 제네릭 솔루션을 정말로 요구하고 있습니까? – atk
"라인"이라고 말하면서 길이가 있다고합니다. 선이나 선분을 의미합니까? x, y 평면에서 두 개의 비평 행선이 세그먼트와 교차하지 않기 때문에 대/소문자가 훨씬 쉽습니다. – user316117