Отобразить окружность в касательную - PullRequest
1 голос
/ 13 ноября 2010

Предположим, вам дан круг с линией AB, содержащей его центр O, так что A и B находятся на круге (OA = OB = радиус).Касательная t рисуется в точке A, и я должен вычислить отображение определенных точек (a, b, c, d ...) окружности на точки касательной (at, bt, ct, dt,...) таким, что расстояние Aa (расстояние по окружности) совпадает с расстоянием Aat (расстояние по касательной) (и то же самое для расстояний Ab, Ac, Ad).Но здесь следует учитывать определенное ограничение: те точки окружности (среди (a, b, c, d)), которые находятся с одной стороны окружности от A до B, должны располагаться на одной стороне касательной (ближе), и те, с другой стороны круга формы от А до В, должны быть размещены на другой стороне.По сути, круг должен быть разбит на B, а затем сопоставлен с касательной.Надеюсь, этого объяснения достаточно.

Следует отметить, что у меня есть информация о координатах A, B, O, a, b, c, d.Я должен рассчитать (в, BT, CT, DT).Для решения этой проблемы у меня есть два подхода, но я не уверен, как я мог убедиться, что они всегда работают правильно.

1) Я вычисляю уравнение касательной в точке А. Затем для каждой точки (a, b, c, d) Я вычисляю расстояние от A (вдоль круга) и использую эти расстояния для вычисления (at, bt, ct, dt ...) вдоль касательной.Здесь я не знаю, как рассчитать расстояния от A до (a, b, c, d).Проблема заключается в определении «правильной стороны», что означает, как я должен определить, должна ли точка отображаться на одной стороне касательной или на другой.Как бы это определить.

2) Я вычисляю уравнение касательной в точке A. Затем для каждой точки (a, b, c, d) я вычисляю расстояние от A (вдолькруг) и использовать эти расстояния для расчета (at, bt, ct, dt ...) вдоль касательной.Чтобы определить «правильную сторону» данной точки, я мог бы использовать проекцию этой точки на касательную.Но даже с этим, как я знаю, «какая сторона с какой»?Возможно, есть гораздо более простые способы сделать это.

Любые предложения о том, как это сделать, приветствуются.Если я не буду достаточно точен, я уточню.

Ответы [ 2 ]

1 голос
/ 13 ноября 2010

Лучшим предложением было бы рассчитать преобразование координат, которое бы отображало круг в единичный круг с центром в начале координат, так что A будет иметь координаты (1, 0) (и B соответственно (-1, 0) ). Преобразование должно быть дилатацией с вращением. Теперь расстояние на Aa - это просто угол aOA, измеренный в радианах. Таким образом, вы можете легко вычислить в: (1, atan2 (y, x) ), где (x, y) - координаты a.

Теперь единственное, что вам нужно, это вернуться к исходной системе координат, применив обратное преобразование.

0 голосов
/ 13 ноября 2010

Чтобы определить, на какой "стороне" круга вы находитесь, вам нужно определить, на какой стороне линии AB вы находитесь. Ответ на этот вопрос см., Например. Определить, с какой стороны линии находится точка .

...