Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 25.11.2003, 09:57
ultraflasher вне форума Посмотреть профиль Найти все сообщения от ultraflasher
  № 11  
ultraflasher
Banned
[03.10.2005]

Регистрация: Nov 2003
Сообщений: 425
Цитата:
Оригинал написал(а) opex
юзай код

Код:
Object.prototype.circleTo = circle;
function circle(radius, NumberOfSteps, Xcenter, Ycenter, thickness, rgb, alpha) {
	Arr = [50, 10, 0, 0, 2, 0, 100];
	for (var i = 0; i<7; i++) {
		if (arguments[i] != undefined) {
			Arr[i] = arguments[i];
		}
	}
	var R = Arr[0];
	var X0 = Arr[2];
	var Y0 = Arr[3];
	var step = 2*Math.PI/Arr[1];
	var R1 = R/Math.cos(step/2);
	this.lineStyle(Arr[4], Arr[5], Arr[6]);
	this.moveTo(X0+R, Y0);
	for (var phi = step; phi<=2*Math.PI; phi += step) {
		var ControlX = X0+R1*Math.cos(phi-step/2);
		var ControlY = Y0-R1*Math.sin(phi-step/2);
		var AnchorX = X0+R*Math.cos(phi);
		var AnchorY = Y0-R*Math.sin(phi);
		this.curveTo(ControlX, ControlY, AnchorX, AnchorY);
	}
}
_root.circleTo(100, 15, 200, 200, 4, 0x00BB00, 100);
У кого украл эту функцию?

Старый 25.11.2003, 23:22
opex вне форума Посмотреть профиль Отправить личное сообщение для opex Найти все сообщения от opex
  № 12  
opex
[+1.3 05.04.09]
 
Аватар для opex

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
какраз это я сам писал ну конешно идея не моя через радиус вычислять точки а портатип мой
__________________
Бойтесь китайцев, компы приносящих!

Старый 26.11.2003, 00:04
Dagi вне форума Посмотреть профиль Отправить личное сообщение для Dagi Найти все сообщения от Dagi
  № 13  
Dagi

Регистрация: Oct 2002
Адрес: Минск,Беларусь
Сообщений: 107
Наглое вранье. Это код из книги "Flash MX и ActionScript: обучение на примерах". Книжка конечно не очень - но факт остается фактом. См. главу 9.

Старый 26.11.2003, 09:05
ultraflasher вне форума Посмотреть профиль Найти все сообщения от ultraflasher
  № 14  
ultraflasher
Banned
[03.10.2005]

Регистрация: Nov 2003
Сообщений: 425
:-<

Старый 26.11.2003, 21:28
opex вне форума Посмотреть профиль Отправить личное сообщение для opex Найти все сообщения от opex
  № 15  
opex
[+1.3 05.04.09]
 
Аватар для opex

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
а вот ещё

Код:
var PositionCentreX = 250;
var PositionCentreY = 250;
var Radius = 150;
var Radius2 = 140;
var AmountSegments = 32;
var Thickness = 50;
var s = 200;
var pX;
var pY;
var P2 = 2*Math.PI;
var Rad = Math.PI/180;
TopsX1 = new Array();
TopsY1 = new Array();
TopsZ1 = new Array();
TopsX2 = new Array();
TopsY2 = new Array();
TopsZ2 = new Array();
for (Znak=1; Znak>-2; Znak -= 2) {
	for (i=0; i<P2; i += 2*Math.PI/AmountSegments) {
		TopsX1.push(0+Radius*Math.cos(i));
		TopsY1.push(0-Radius*Math.sin(i));
		TopsZ1.push(Znak*Thickness/2);
	}
}
for (Znak=1; Znak>-2; Znak -= 2) {
	for (i=0; i<P2; i += 2*Math.PI/AmountSegments) {
		TopsX2.push(0+Radius2*Math.cos(i));
		TopsY2.push(0-Radius2*Math.sin(i));
		TopsZ2.push(Znak*Thickness/2);
	}
}
_root.onEnterFrame = function() {
	pX = -(PositionCentreX-_ymouse)*0.005;
	pY = (PositionCentreY-_xmouse)*0.005;
	_root.clear();
	for (i=0; i<=AmountSegments*2; i++) {
		cosX = Math.cos(pX*Rad);
		sinX = Math.sin(pX*Rad);
		cosY = Math.cos(pY*Rad);
		sinY = Math.sin(pY*Rad);
		PowY = TopsY1[i]*cosX-TopsZ1[i]*sinX;
		PowX = TopsX1[i]*cosY+(TopsY1[i]*sinX+TopsZ1[i]*cosX)*sinY;
		PowZ = -TopsX1[i]*sinY+(TopsY1[i]*sinX+TopsZ1[i]*cosX)*cosY;
		TopsX1[i] = PowX;
		TopsY1[i] = PowY;
		TopsZ1[i] = PowZ;
		PowY = TopsY2[i]*cosX-TopsZ2[i]*sinX;
		PowX = TopsX2[i]*cosY+(TopsY2[i]*sinX+TopsZ2[i]*cosX)*sinY;
		PowZ = -TopsX2[i]*sinY+(TopsY2[i]*sinX+TopsZ2[i]*cosX)*cosY;
		TopsX2[i] = PowX;
		TopsY2[i] = PowY;
		TopsZ2[i] = PowZ;
	}
	this.lineStyle(0, 0xffffff, 100);
	this.moveTo(PositionCentreX+TopsX1[0]*(s/(s+TopsZ1[0])), PositionCentreY+TopsY1[0]*(s/(s+TopsZ1[0])));
	for (i=1; i<AmountSegments; i++) {
		this.lineTo(PositionCentreX+TopsX1[i]*(s/(s+TopsZ1[i])), PositionCentreY+TopsY1[i]*(s/(s+TopsZ1[i])));
	}
	this.lineTo(PositionCentreX+TopsX1[0]*(s/(s+TopsZ1[0])), PositionCentreY+TopsY1[0]*(s/(s+TopsZ1[0])));
	this.moveTo(PositionCentreX+TopsX1[AmountSegments]*(s/(s+TopsZ1[AmountSegments])), PositionCentreY+TopsY1[AmountSegments]*(s/(s+TopsZ1[AmountSegments])));
	for (i=1; i<AmountSegments; i++) {
		this.lineTo(PositionCentreX+TopsX1[i+AmountSegments]*(s/(s+TopsZ1[i+AmountSegments])), PositionCentreY+TopsY1[i+AmountSegments]*(s/(s+TopsZ1[i+AmountSegments])));
	}
	this.lineTo(PositionCentreX+TopsX1[AmountSegments]*(s/(s+TopsZ1[AmountSegments])), PositionCentreY+TopsY1[AmountSegments]*(s/(s+TopsZ1[AmountSegments])));
	for (i=0; i<AmountSegments; i++) {
		this.moveTo(PositionCentreX+TopsX1[i]*(s/(s+TopsZ1[i])), PositionCentreY+TopsY1[i]*(s/(s+TopsZ1[i])));
		this.lineTo(PositionCentreX+TopsX1[i+AmountSegments]*(s/(s+TopsZ1[i+AmountSegments])), PositionCentreY+TopsY1[i+AmountSegments]*(s/(s+TopsZ1[i+AmountSegments])));
	}
	this.moveTo(PositionCentreX+TopsX2[0]*(s/(s+TopsZ2[0])), PositionCentreY+TopsY2[0]*(s/(s+TopsZ2[0])));
	for (i=1; i<AmountSegments; i++) {
		this.lineTo(PositionCentreX+TopsX2[i]*(s/(s+TopsZ2[i])), PositionCentreY+TopsY2[i]*(s/(s+TopsZ2[i])));
	}
	this.lineTo(PositionCentreX+TopsX2[0]*(s/(s+TopsZ2[0])), PositionCentreY+TopsY2[0]*(s/(s+TopsZ2[0])));
	this.moveTo(PositionCentreX+TopsX2[AmountSegments]*(s/(s+TopsZ2[AmountSegments])), PositionCentreY+TopsY2[AmountSegments]*(s/(s+TopsZ2[AmountSegments])));
	for (i=1; i<AmountSegments; i++) {
		this.lineTo(PositionCentreX+TopsX2[i+AmountSegments]*(s/(s+TopsZ2[i+AmountSegments])), PositionCentreY+TopsY2[i+AmountSegments]*(s/(s+TopsZ2[i+AmountSegments])));
	}
	this.lineTo(PositionCentreX+TopsX2[AmountSegments]*(s/(s+TopsZ2[AmountSegments])), PositionCentreY+TopsY2[AmountSegments]*(s/(s+TopsZ2[AmountSegments])));
	for (i=0; i<AmountSegments; i++) {
		this.moveTo(PositionCentreX+TopsX2[i]*(s/(s+TopsZ2[i])), PositionCentreY+TopsY2[i]*(s/(s+TopsZ2[i])));
		this.lineTo(PositionCentreX+TopsX2[i+AmountSegments]*(s/(s+TopsZ2[i+AmountSegments])), PositionCentreY+TopsY2[i+AmountSegments]*(s/(s+TopsZ2[i+AmountSegments])));
	}
	for (i=0; i<AmountSegments; i++) {
		this.moveTo(PositionCentreX+TopsX1[i]*(s/(s+TopsZ1[i])), PositionCentreY+TopsY1[i]*(s/(s+TopsZ1[i])));
		this.lineTo(PositionCentreX+TopsX2[i]*(s/(s+TopsZ2[i])), PositionCentreY+TopsY2[i]*(s/(s+TopsZ2[i])));
		this.moveTo(PositionCentreX+TopsX1[i+AmountSegments]*(s/(s+TopsZ1[i+AmountSegments])), PositionCentreY+TopsY1[i+AmountSegments]*(s/(s+TopsZ1[i+AmountSegments])));
		this.lineTo(PositionCentreX+TopsX2[i+AmountSegments]*(s/(s+TopsZ2[i+AmountSegments])), PositionCentreY+TopsY2[i+AmountSegments]*(s/(s+TopsZ2[i+AmountSegments])));
	}
};
__________________
Бойтесь китайцев, компы приносящих!

Старый 27.11.2003, 10:20
ultraflasher вне форума Посмотреть профиль Найти все сообщения от ultraflasher
  № 16  
ultraflasher
Banned
[03.10.2005]

Регистрация: Nov 2003
Сообщений: 425
А вот моя функция рисования окружности. Намного проще и лучше всего предложенного.

MovieClip.prototype.circle = function(x, y, r) {

// Функция: circle
//
// Описание: Рисует окружность.
// x, y - координаты центра
// r - радиус окружности

var mas = new Array();
var step = 16;
var angle = 360/step;
var rad = Math.PI/180;
for (var i = 0; i<=step; i++) {
mas[i] = new Object();
mas[i].x = Math.cos(angle*rad*i)*r+x;
mas[i].y = Math.sin(angle*rad*i)*r+y;
}
this.moveTo(mas[0].x, mas[0].y);
for (var i = 0; i<step; i += 2) {
// curveThreeTo
var cx = 2*mas[i+1].x-0.5*(mas[i].x+mas[i+2].x);
var cy = 2*mas[i+1].y-0.5*(mas[i].y+mas[i+2].y);
this.curveTo(cx, cy, mas[i+2].x, mas[i+2].y);
}
};

Старый 27.11.2003, 12:21
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 17  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
приятно видеть, что стлько народу учило в школе тригонометрию :))

это все охренеть как круто, но практического применения окружностей рисованных из 16 дуговых сегментов - ноль. слишком сложно. соотношение стоимости овчинки и её выделки явно не в пользу овчинки :)

Старый 27.11.2003, 13:40
ultraflasher вне форума Посмотреть профиль Найти все сообщения от ultraflasher
  № 18  
ultraflasher
Banned
[03.10.2005]

Регистрация: Nov 2003
Сообщений: 425
А что мешает задать 12 - 10 - 8 - 6 ????
Просто 16 - для супер точности.

Старый 27.11.2003, 13:42
ultraflasher вне форума Посмотреть профиль Найти все сообщения от ultraflasher
  № 19  
ultraflasher
Banned
[03.10.2005]

Регистрация: Nov 2003
Сообщений: 425
Да и ещё. Тебе этот адресок не знаком?

http://www.astronomy.swin.edu.au/~pbourke

Так вот. Я его сейчас закачиваю. Уже 8000 файлов закачалось. Телепортом.

Старый 27.11.2003, 13:46
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 20  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
дадада, поль бурк монстер :)
я когда-то во флэше сделал рисование кривой бабочки, у него нашел формулу...
на форуме есть где-то :)

а насчет окружности - проще нарисовать руками, приаттачить и отскейлить. удобно, доступно, недорого. незачем извращаться кодом там где это незачем :) по-моему так...

Создать новую тему   Часовой пояс GMT +4, время: 18:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.