Показать сообщение отдельно
Старый 30.01.2014, 11:25
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 10  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
А у меня другая идея - уменьшить оба радиуса эллипса (обе полуоси) на радиус окружности и вычислять радиус в точке, в которой находится центр круга по формуле
Название: eqn.png
Просмотров: 1031

Размер: 4.7 Кб
Если расстояние до центра эллипса меньше, чем вычисленное значение радиуса, то круг внутри эллипса

a и b - это большая и малая полуось эллипса. угол фи находится через арктангенс координат центра круга, функция Math.atan2()

Я правда не знаю точно, приведет ли уменьшение полуосей эллипса на радиус к тому, что круг будет всегда внутри эллипса, но по идее должно работать.

Если поворачивать эллипс, то можно заперентить его на какой нибудь ДО, и повернуть родительский ДО. Тогда дочерние ДО (эллипс и круг) будут иметь локальные координаты, как будто горизонтально, без поворота

Плюсы - быстро, модно, молодежно, без уравнений и корней
Минусы - при повороте эллипса придется либо формулы менять, либо вешать внутрь какого-либо родительского ДО для поворота этого родительского ДО

--UPD
Или стоп, можно изначально не уменьшать полуоси, а потом после вычисления радиуса по формуле вычесть из него. Вот тогда точно будет работать


Последний раз редактировалось KumoKairo; 30.01.2014 в 11:53.