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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.04.2008, 23:26
pavlovsb вне форума Посмотреть профиль Отправить личное сообщение для pavlovsb Найти все сообщения от pavlovsb
  № 1  
Ответить с цитированием
pavlovsb

Регистрация: Jul 2006
Сообщений: 12
По умолчанию Геометрия. проекция тени

Друзья, подскажите как быть.

Есть объект ( в моем случае ромб). Объект подвижный. Мне необходимо определять его тень относительно источника света.

в приложении мои потуги, ниже код.

Проблема заключается в том, что в одном моменте радианы меняют знак и угол, который должен быть крайним , перестаёт быть таковым.

Код:
var map = new Object();
map.cellw=80;
map.cellh=40;



function getAngles(cell,robo){
	x0 = robo._x
	y0 = robo._y;
	
	x1 = cell._x+map.cellw/2
	y1 = cell._y;
	
	x2 = cell._x-map.cellw/2
	y2 = cell._y;
	
	x3 = cell._x
	y3 = cell._y+map.cellh/2;

	x4 = cell._x
	y4 = cell._y-map.cellh/2;
	
	x5 = cell._x
	y5 = cell._y;

	a1=Math.atan2(y1-y0,x1-x0);
	a2=Math.atan2(y2-y0,x2-x0);
	a3=Math.atan2(y3-y0,x3-x0);
	a4=Math.atan2(y4-y0,x4-x0);
	
	_root.txt.text =a1+'\n'+a2+"\n"+a3+'\n'+a4;
	
	mid = Math.atan2(y5-y0,x5-x0);
	
	dest = Math.sqrt(Math.pow(x5-x0,2)+Math.pow(y5-y0,2))
	
	a1=a1;
	a2=a2;
	a3=a3;
	a4=a4;
	
	max1 = Math.max(a1,a2);
	max2 = Math.max(a3,a4);
	max = Math.max(max1,max2);
	
	min1 = Math.min(a1,a2);
	min2 = Math.min(a3,a4);
	min = Math.min(min1,min2);
	
	_root.dr.clear() 
	_root.dr.lineStyle(5, 0xFF00FF, 100);

	_root.dr.moveTo(x0,y0);
	_root.dr.lineTo(x0+dest*Math.cos(min),y0+dest*Math.sin(min));
	_root.dr.moveTo(x0,y0);
	_root.dr.lineTo(x0+dest*Math.cos(max),y0+dest*Math.sin(max));
	_root.dr.moveTo(x0,y0);
	_root.dr.lineTo(x0+dest*Math.cos(mid),y0+dest*Math.sin(mid));

	return({max:max,min:min});

}


function go(){
	_root.onMouseMove= function(){
	_root.s1._x=_root._xmouse;
	_root.s1._y=_root._ymouse;
	getAngles(_root.s1,_root.s0);
	
	}
}

go();
Вложения
Тип файла: zip svet-ten.zip (6.9 Кб, 64 просмотров)

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

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

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


 


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


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