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

  • Автор темы Автор темы Korino
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Korino

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

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

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

AirGraph.
 
Ответ: Построение части окружности

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” ясно, а чем заполнять “?, ?”?
 
Ответ: Построение части окружности

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

В наборе скриптов 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
 
Ответ: Построение части окружности

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

Вложения

  • Arc.rar
    Arc.rar
    1.1 КБ · Просм.: 449
Ответ: Построение части окружности

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