![]() |
[MX] Западло curveTo()
Вложений: 1
Вот функция:
Код:
Судя по всему, кривые реализованы как-то неправильно, поэтому я ввел поправочный коэффициент для координат углов квадрата (в него вписана окружность), так, что эти углы "убираются" внутрь него и поправляют контур круга: Код:
Код:
|
хех, ты глянь в мокромедийный исходник в хелпе, у них тоже скругленный квалрат рисуется :)))))....
имхо я рисовал пикселями через синусы и косинусы... правда с заливкой траблы :((((.... зы: наверное программеры из мокрой писали эту фичу в пьяном угаре(там среди них два русских :)))) ))))... |
способ 1:
рисование окружностей 2-мя ПРЯМЫМИ линиями :) function drawCircle(x, y, radius, cWidth) { mc = _root.createEmptyMovieClip("circle"+cnt, ++cnt); mc.lineStyle(radius, 0x000000, 100); mc.moveTo(x, y); mc.lineTo(x, y+.15); mc.lineStyle(radius-cWidth, 0xffffff, 100); mc.moveTo(x, y); mc.lineTo(x, y+.15); } function redraw() { cnt = 0; for (i=0; i<100; i++) { drawCircle(random(750), random(430), 10+random(150), 1+random(10)); } } redraw(); stop(); способ2: function drawCircle(x, y, radius, startAngle, endAngle) { segm = (endAngle-startAngle)/5; this.moveTo(x+radius*Math.cos(startAngle*Math.rad), y+radius*Math.sin(startAngle*Math.rad)); for (var s = startAngle+segm; s<=endAngle+1; s += segm) { var c_x = radius*Math.cos(s*Math.rad); var c_y = radius*Math.sin(s*Math.rad); var a_x = c_x+radius*Math.tan(segm/2*Math.rad)*Math.cos((s-90)*Math.rad); var a_y = c_y+radius*Math.tan(segm/2*Math.rad)*Math.sin((s-90)*Math.rad); this.curveTo(a_x+x, a_y+y, c_x+x, c_y+y); } } _root.drawCircle(100, 100, 50, 0, 360); |
beep, Дениска, а можно поподробнее, плз...
|
2 Дениска:
Способ №1 - все гениальное воистину просто! только прозрачную дырку не нарисуешь ;-) |
Цитата:
|
Если честно, то не понял как двумя ПРЯМЫМИ можно нарисовать окружность????!!!!....
как оно вообще работает(строки прокомментируй просто ) |
Из параболы окружность не сделаешь, только приблизительно.
Ловите метод, риует эллипс (или его часть) под заданным углом. Точность - 927/1000. Код:
function Ellipse(CenterX, CenterY, ARadius, BRadius, ARadAngle){ |
Да, про аргументы:
CenterX - координата X центра пересечения радиусов CenterY - координата Y центра пересечения радиусов ARadius - радиус А BRadius - радиус B ARadAngle - угол наклона радиуса А StartAngle - начальный угол сегмента EndAngle - конечный угол сегмента. Последние два параметра можно не задавать. Тогда нарисуется эллипс целиком. 2Хрюндик. Никакого пьяного угара. Обычный NURBS |
beep, офигеть! Жаль что мы еще эту чушь не проходили в школе :)
|
| Часовой пояс GMT +4, время: 19:23. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.