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

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

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

Регистрация: May 2009
Сообщений: 173
По умолчанию Как узнать на каком градусе находится мышка ?

Всем привет !

Есть MovieClip

Код AS3:
Mc.graphics.drawRect(-50,-50,100, 100);// точку регистрации делаем по центру !
как узнать на каком градусе находится мышка на обьекте Mc ?

Старый 28.10.2009, 16:30
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 2  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Зависит от рода и количества выпитого. Если водка(40градусов) массой 20грамм, то считать легко - 20гр разделить на массу мышки, затем результат умножаете на 100% и получаете общий среднемышиный, так сказать, градус.

Можно еще тригонометрией воспользоваться. Определить синус и косинус, а по ним уже угол отклонения от вертикали там или горизонтали.

Старый 28.10.2009, 16:31
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 3  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
Код AS3:
		public function angleRotation(x1,y1,x2,y2):Number {
			var x_=x2-x1;
			var y_=y2-y1;
 
			var result:Number=0;
 
			if (Math.abs(x_)<0.01) {
				result = (sign(y_)*Math.PI + Math.PI/2);
			} else if (Math.abs(y_)<0.01) {
				result = (sign(x_)*Math.PI);
			} else if (x_>0&&y_>0) {
				result=Math.asin(y_/Math.sqrt(x_*x_+y_*y_));
 
			} else if (x_<0&&y_>0) {
				result=Math.PI/2+Math.acos(y_/Math.sqrt(x_*x_+y_*y_));
 
			} else if (x_<0&&y_<0) {
				result=Math.PI+Math.acos(Math.abs(x_)/Math.sqrt(x_*x_+y_*y_));
			} else if (x_>0&&y_<0) {
				result=3*Math.PI/2 + Math.acos(Math.abs(y_)/Math.sqrt(x_*x_+y_*y_) );
			}
 
			result = 180*(result)/Math.PI;
			return result;
		}
 
 
		function sign(x_):int {
			if (x_>0) {
				return 0;
			} else {
				return 1;
 
			}
Оно?

Или можно одной строкой, но оси ловите сами.
Код AS3:
			test_x=100;
			test_y=100;
			trace(180*( (test_y>0?1:-1)*Math.acos(test_x/Math.sqrt(test_x*test_x+test_y*test_y)))/Math.PI);

Старый 28.10.2009, 16:36
_moscow вне форума Посмотреть профиль Отправить личное сообщение для _moscow Найти все сообщения от _moscow
  № 4  
Ответить с цитированием
_moscow
 
Аватар для _moscow

Регистрация: May 2009
Сообщений: 173
Опиши что за данные входят angleRotation(x1,y1,x2,y2) ?

Старый 28.10.2009, 16:39
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 5  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
Две точки. x1,y1 - начало координат. x2,y2 - произвольная точка. Мысленно проводим прямую через начало координат и произвольную точку. Получаем в градусах угол между осью Х и прямой.

Старый 28.10.2009, 16:59
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 6  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Код AS3:
public function getAngle(x0:Number, y0:Number, x1:Number, y1:Number):Number
{
     return Math.atan2(y1 - y0, x1 - x0);
}
ах да! градусы:
Код AS3:
public function getAngleGradus(x0:Number, y0:Number, x1:Number, y1:Number):Number
{
     return (Math.atan2(y1 - y0, x1 - x0) / PI * 180);
}
__________________
Поймай яблоко 2!


Последний раз редактировалось Zebestov; 28.10.2009 в 17:05.
Старый 28.10.2009, 17:46
_moscow вне форума Посмотреть профиль Отправить личное сообщение для _moscow Найти все сообщения от _moscow
  № 7  
Ответить с цитированием
_moscow
 
Аватар для _moscow

Регистрация: May 2009
Сообщений: 173
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Код AS3:
public function getAngle(x0:Number, y0:Number, x1:Number, y1:Number):Number
{
     return Math.atan2(y1 - y0, x1 - x0);
}
ах да! градусы:
Код AS3:
public function getAngleGradus(x0:Number, y0:Number, x1:Number, y1:Number):Number
{
     return (Math.atan2(y1 - y0, x1 - x0) / PI * 180);
}
спасиб хорошая функция , но она считает только до 180 - а как до 360 ?

Старый 28.10.2009, 17:09
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 8  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
Zebestov, круто)

Старый 28.10.2009, 18:26
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 9  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Код AS3:
public function getAngleGradus360(x0:Number, y0:Number, x1:Number, y1:Number):Number
{
     var a:Number = (Math.atan2(y1 - y0, x1 - x0) / PI * 180);
     a = (a < 0) ? (360 - a) : a;
     return a;
}
по аналогии getAngle доводим )
__________________
Поймай яблоко 2!

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

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

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


 


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


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