네 개의 점에서 두 개의 라인 교점 코드를 구하여 실현하다
5426 단어 코드
교점 공식: x= (y3x4x2-y4x3-y3x4x1+y4x3-y1x2x4+y2x1x4+y2x1x4+y1x2x3-y2x1x3)/x4y2-x4y1-x3y2+x3y1-x2y4+x2y3+x1y4-x1y3
y=(-y3x4y2+y4x3y2+y3x4y1-y4x3y1+y1x2y4-y1x2y3-y2x1y4+y2x1y3)/y4x2-y4x1-y3x2+x1y3-y2x4+y2x3+y1x4-y1x3
코드 구현:
CvPoint CrossPoint(const CvPoint line1, const CvPoint line2, const CvPoint line3, const CvPoint line4) //
{
double x_member, x_denominator, y_member, y_denominator;
CvPoint cross_point;
x_denominator = line4.x*line2.y - line4.x*line1.y - line3.x*line2.y + line3.x*line1.y
- line2.x*line4.y + line2.x*line3.y + line1.x*line4.y - line1.x*line3.y;
x_member = line3.y*line4.x*line2.x - line4.y*line3.x*line2.x - line3.y*line4.x*line1.x + line4.y*line3.x*line1.x
- line1.y*line2.x*line4.x + line2.y*line1.x*line4.x + line1.y*line2.x*line3.x - line2.y*line1.x*line3.x;
if (x_denominator == 0)
cross_point.x = 0;
else
cross_point.x = x_member / x_denominator;
y_denominator = line4.y*line2.x - line4.y*line1.x - line3.y*line2.x + line1.x*line3.y
- line2.y*line4.x + line2.y*line3.x + line1.y*line4.x - line1.y*line3.x;
y_member = -line3.y*line4.x*line2.y + line4.y*line3.x*line2.y + line3.y*line4.x*line1.y - line4.y*line3.x*line1.y
+ line1.y*line2.x*line4.y - line1.y*line2.x*line3.y - line2.y*line1.x*line4.y + line2.y*line1.x*line3.y;
if (y_denominator == 0)
cross_point.y = 0;
else
cross_point.y = y_member / y_denominator;
return cross_point; // (0,0)
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
vue 단일 페이지에 여러 개의 echarts 도표가 있을 때의 공용 코드 쓰기html에서: 데이터 처리는 말할 필요가 없다.응, 직접 그림을 그려: 공통 섹션: 이 페이지를 떠날 때 파괴: 추가 정보: Vue + Echarts 차트 표시 및 동적 렌더링 준비 작업 echarts 의존 설치 n...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.