Нахождение точек пересечения двух элипсов

Сентябрь 21, 2008

Недавно столкнулся с задачей нахождения точек пересечения двух произвольных елипсов и элипса с окружностью. Задача оказалась нетривиальной. Попытался найти решения в интернете, но это казалось не так просто.

За основу я взял расчеты которые были опубликованы в книге Graphics Gems.

Саму математику вы можете скачать внизу страницы, а здесь я только приведу пример использования.

Пример

#include "conmat.h"
....
CollisionHelper::Ellipse Elp1={{centerX1,centerY1},	majorRadius1, minorRadius1, angle1};
CollisionHelper::Ellipse Elp2={{centerX2,centerY2},	majorRadius2, minorRadius2, angle2};

CollisionHelper::Point IntPts[12];
int IntCount;
/* find ellipse intersections */
IntCount=CollisionHelper::Int2Elip(IntPts,&Elp1,&Elp2);
if(IntCount > 0)
	return true;
else
	return false;

			

Реализация расчетов находится тут.

Обсудить в форуме.


Раз вы уже дочитали до сюда, то вам ничего не будет стоить кликнуть на рекламу

All content copyright (c) 2012 Vladislav Litunovskiy. All Rights Reserved.