Построение части окружности

Статус
Закрыто для дальнейших ответов.

Korino

Участник
Топикстартер
Сообщения
18
Реакции
0
Добрый день!
Возможно кто-нибудь сможет просветить меня.
Насколько я понимаю, длина направляющих зависит от радиуса и длины дуги, а вот какова эта зависимость не смог найти. Можно конечно экспериментально попытаться определить ее, но думаю, существует общий принцип таких построений. Кого не затруднит, объясните пожалуйста или дайте ссылку по теме.
 

dimohha

И хочется...И колется...
Сообщения
2 173
Реакции
198
Ответ: Построение части окружности

Часть окржности это дуга? А вчём трабла? Из вопроса не понятно.
 

AirGraph

Участник
Сообщения
244
Реакции
21
Ответ: Построение части окружности

Когда-то давным-давно я интересовался подобным вопросом. Ответ надо искать в описании PostScript. Там будет подробно описано как построить дугу с заданными параметрами, как, впрочем и еще очень многое другое. Это, правда, дело не на день и не на два, там есть где повеселиться. ;-)))))

AirGraph.
 

Korino

Участник
Топикстартер
Сообщения
18
Реакции
0
Ответ: Построение части окружности

dimohha сказал(а):
Часть окржности это дуга? А вчём трабла? Из вопроса не понятно.
Наверное это все-таки дуга.Трабла в том, как ее построить.
Для примера задача: построить 1/6 окружности с радиусом R. Какие данные нужны? Одна опорная точка, ее координаты (допустим нам их задали) и по меньшей мере еще одна точка, ее координаты можем вычислить. Необходимо еще указать координаты конечных точек направляющих. Вот здесь трабла.

var newDoc = app.activeDocument;
var newPathIt = newDoc.pathItems.add();

var p = newPathIt.pathPoints.add();
p.anchor = Array(x, y);
p.leftDirection = Array(?, ?);
p.rightDirection = Array(?, ?);

var p1 = newPathIt.pathPoints.add();
p1.anchor = Array(x, y);
p1.leftDirection = Array(?, ?);
p1.rightDirection = Array(?, ?);

С “x, y” ясно, а чем заполнять “?, ?”?
 

Korino

Участник
Топикстартер
Сообщения
18
Реакции
0
Ответ: Построение части окружности

AirGraph. Спасибо, обязательно загляну в описание PostScript, но не хотелось залазить в дебри теории. Мне казалось существует простая зависимость между радиусом, углом и длиной направляющих и описывается простенькой формулой. Впрочем, не исключено, что это только кажется.
 

Kuzmin

15 лет на форуме
Сообщения
236
Реакции
92
Ответ: Построение части окружности

В наборе скриптов Hiroyuki Sato есть скрипт circle.js рисующий окружность с заданным количеством узлов.
Для вычисления длины направляющих там используется следующее:
Код:
    theta = 2*Math.PI / number_of_anchors;
    handle_length = radius * 4 / 3 * (1 - Math.cos(theta / 2))/Math.sin(theta / 2);
Набор скриптов можно взять тут:
http://park12.wakwak.com/~shp/lc/et/en_aics_script.html#TOP
 

Korino

Участник
Топикстартер
Сообщения
18
Реакции
0
Ответ: Построение части окружности

Добрый день всем!
Вообще-то мне нужно было построить дугу размером в четверть окружности, но не зная длину направляющих, сделать это было трудно. Спасибо Kuzminу, получил ссылку и соотношение величин.
Принялся за работу. Ну, а если писать, то не только же для четверти, а и для произвольной части. Быстренько написал, но не тут-то было. Начал тестировать. 15 градусов, 30, 45, 60, 90 - все хорошо, а свыше 90 появились ощутимые отклонения от окружности.
После 180 градусов возникла необходимость устанавливать дополнительные опорные точки, и это, конечно, закономерно, не зря же в окружности, созданной стандартным инструментом "эллипс", имеется 4 опорные точки.
На этом этапе мелькнула мысль совсем забросить затею, но потом все-таки решил добить. В итоге написал скрипт, который и публикую, кому-то возможно пригодится.
Сразу же сделаю оговорку. Своим "творением" не доволен, получилось как-то неуклюже, запутано, заумно, не образец для подражания, тем не менее работает.
И уже вот сейчас подумалось, что пошел я совсем не тем путем, наверное проще было создать окружность "эллипсом", затем closed=false, добавить неоходимую точку и удалить лишние.
Возможно когда-нибудь и попробую, но не сейчас.
 

Вложения

  • Arc.rar
    1.1 КБ · Просм.: 414

Fog_patch

12 лет на форуме
Сообщения
3 163
Реакции
998
Ответ: Построение части окружности

Угу, вроде работает. И, кстати, это можно дополировать до чего-нибудь полезного. Помнится были вопросы как создать часть круга (типа как в Кореле).
 
Статус
Закрыто для дальнейших ответов.