//*****************************************
//Делает клоны в виде аттрактора
//Выбрать объект и выделить его
var vDoc;
var ClonOb;
var NewNull;
var NewClonOb;
var i,j;//Индексы цикла
//********************
var x,y,z;
var a=0.85;////Переменные аттрактора
var b=0.90;////Переменные аттрактора
var c=0.40;////Переменные аттрактора
var d=9.00;////Переменные аттрактора
var t,s,co;//Переменные формулы аттрактора
var N=100;//Количество клонов
var x0=0.0;//Старт x
var y0=0.2;//Старт y (на радиус сферы=0.2)
var xa;// x-АЛЬФА
var ya;// y-АЛЬФА
var Faktor=300;//Увеличитель
//**********************
FormClone(vDoc)//Функция отрисовки
{
//***************
ClonOb=vDoc->GetActiveObject(); if (!ClonOb) println("Select object"); //Получить выделенный объект, если не выделен, прервать выполнение скрипта
if (!ClonOb) return FALSE;//если не выделен, прервать выполнение скрипта
NewNull = new(NullObject); // Создать новый Null объект
NewNull->SetName("Clones");// Имя клонов
vDoc->InsertObject( NewNull, NULL, NULL );//Ввести в Объект Менеджер
//**************
xa=x0;//Это x-АЛЬФА-начальная - var x0=0.0;-Старт x
y=y0;// var y0=0.2;-Старт y (на радиус сферы=0.2)
ya=y0;
for (j=0;j<N-1;j++)// от 0 до 999 (var N=1000;)
{
t=c-d/(1+xa*xa+y*y);//Переменная t для аттрактора
s=sin(t);//Переменная s для аттрактора
co=cos(t);//Переменная co для аттрактора
x=a+b*(xa*co-y*s);//Формула по x
y=b*(xa*s+y*co);//Формула по y
z = ya;//Формула по z
//*************************
NewClonOb = ClonOb->GetClone(0);// Сделать клон выделенного объекта
var sc = NewClonOb->GetContainer();//Получить контейнер для клонов
NewClonOb->SetContainer(sc);//Установить контейнер для клонов
NewClonOb->SetName("Object." + tostring(i));//Дать порядковое имя клонам
NewClonOb->SetPosition(vector(x*Faktor,y*Faktor,z*Faktor));//Установить клон в новую позицию x, y, z
vDoc->InsertObject(NewClonOb,NewNull,NULL);//Добавить детку клона к родителю NULL
GeEventAdd(DOCUMENT_CHANGED);//Зафиксировать изменения в документе
xa=x;// x-АЛЬФА теперь с новой позиции
ya=y;// y-АЛЬФА теперь с новой позиции
}
}//конец FormClone(vDoc)
//*********************
main(doc,op)//Главная функция, начало работы скрипта
{
vDoc = GetActiveDocument();//Получить активный документ
FormClone(vDoc);//Нарисовать
}
//**************************************
Комментариев нет:
Отправить комментарий