![]() |
вот схемка :) задача по геометрии, седьмой класс :p
формула не такая как у Дениски, но вариантов может быть очень много :) |
алгоритм:
-- даны углы: strt - начальный угол дуги end - конечный угол дуги -- дан радиус 'r ' -- дано положение центра окружности (cx, cy) ставим начальное положение: moveTo(cx+r*Math.cos(strt*rad), cy+r*Math.sin(strt*rad)); где rad = Math.PI/180; (перевод в радианы) конечное положение аналогично: {x:cx+r*Math.cos(end*rad), y:cy+r*Math.sin(end*rad))} положение управляющей точки: l = r/Math.cos((end-strt)/2*rad); длина отрезка между центром окружности и контрольной точкой controlPoint.x = cx + l*cos((strt+end)/2*rad); controlPoint.y = cy + l*sin((strt+end)/2*rad); все :) поставили moveTo в начальное положение и сделали curveTo(controlPoint.x, controlPoint.y, конечное.x, конечное.y) |
Угу, только алгоритм Aib работает процентов на 40 быстрее.
|
2Entropy
просили объяснить Денискин способ #2 рисования окружности... ...и причем тут алгоритм рисования эллипса Aib'а ? :) |
Разбор эллипса во второй части урока по кривым будет, вместе с другими примитивами.
|
| Часовой пояс GMT +4, время: 22:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.