Информация об изменениях

Сообщение Re[2]: Обобщение окружности и прямой... от 09.10.2015 22:55

Изменено 15.10.2015 20:14 Рома Мик

Здравствуйте, Кодт, Вы писали:

К>Поскольку для angle-based blending нужна даже не кривизна, а угол, то есть смысл оперировать углом касательной дуги к её хорде.

Взял и все сразу правильно придумал!

К>Как находить точки дуги по хорде и углу касательной — тут надо подумать.

Как подсказали, есть статья и в ней подробно описано. Я даже понял.



Есть три точки A, B, C. Угол ABC (на картинке — a) равен половине дуги (AC.
Углы между касательными в точках A и C и прямой AC равны половине дуги (AC, то есть равны углу ABC.

Теперь отдельно рассмотрим AC и угол b, под которым проходят через точки A и C касательные к новой окружности, хордой которой является AC.
Дуга (AC в этой новой окружности равна 2 * b
Пусть точка P(t=0..1) плавно едет от A к C по дуге (AC.
Дуга (AP = (AC * t = 2 * b * t
Дуга (PC = (AC * (1 — t) = 2 * b * (1 — t)
Угол PAC = (PC / 2 = b * (1 — t)
Длина хорды, как пишут в интернете, равна 2R*sin(alpha)
Т.е. AC = 2R * sin( (AC )
Тогда AP = 2R * sin( (AP ) = 2R * sin( (AC*t ) = AC * sin( (AC * t) = AC * sin( 2 * b * t)
Осталось отметить, что как уже говорили (AC равно углу касательной к окружности в точке A и AC.

Угол PAC и длина AP однозначно задают положение точки P.
Здравствуйте, Кодт, Вы писали:

К>Поскольку для angle-based blending нужна даже не кривизна, а угол, то есть смысл оперировать углом касательной дуги к её хорде.

Взял и все сразу правильно придумал!

К>Как находить точки дуги по хорде и углу касательной — тут надо подумать.

Как подсказали, есть статья и в ней подробно описано. Я даже понял.



Есть три точки A, B, C. Угол ABC (на картинке — a) равен половине дуги (AC.
Углы между касательными в точках A и C и прямой AC равны половине дуги (AC, то есть равны углу ABC.

Теперь отдельно рассмотрим AC и угол b, под которым проходят через точки A и C касательные к новой окружности, хордой которой является AC.
Дуга (AC в этой новой окружности равна 2 * b
Пусть точка P(t=0..1) плавно едет от A к C по дуге (AC.
Дуга (AP = (AC * t = 2 * b * t
Дуга (PC = (AC * (1 — t) = 2 * b * (1 — t)
Угол PAC = (PC / 2 = b * (1 — t)
Длина хорды, как пишут в интернете, равна 2R*sin(alpha)
Т.е. AC = 2R * sin( (AC )
Тогда AP = 2R * sin( (AP ) = 2R * sin( (AC*t ) = AC * sin( (AC * t) = AC * sin( 2 * b * t)
Тогда AP = 2R * sin( (AP ) = 2R * sin( (AC*t ) = AC * sin( (AC * t) / sin( (AC ) = AC * sin( 2 * b * t) / sin( (AC )

Осталось отметить, что как уже говорили (AC равно углу касательной к окружности в точке A и AC.

Угол PAC и длина AP однозначно задают положение точки P.