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

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

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

Регистрация: Feb 2012
Сообщений: 212
По умолчанию Упростить выражение до квадратного уравнения у найти корни

Здравствуйте, имеется выражение ((x1 + xV1 * t) - (x2 + xV2 * t))^2 = r. Предполагается, что нам известны все переменные кроме t которую нужно вычислить. Для этого нужно упростить выражение до квадратного уравнения. Что бы быть уверенным, что я не ошибся в упрощении выражения я подставил во все переменные кроме r значения и вычислил результат: r = 4, далее, при упрощении сверялся с этим результатом.
Код AS3:
var t:Number = 2;
 
var x1:Number = 2;
var xV1:Number = 2;
 
var x2:Number = 12;
var xV2:Number = -2;
 
 
 
var:Number res = Math.Pow((x1 + xV1 * t) - (x2 + xV2 * t), 2)// res == 4;
res = Math.Pow((x1 + xV1 * t), 2) - 2 * (x1 + xV1 * t) * (x2 + xV2 * t) + Math.Pow((x2 + xV2 * t), 2); // res == 4
res = x1 * x1 + 2 * x1 * xV1 * t + xV1 * xV1 * t * t + -2 * x1 * x2 + -2 * x1 * xV2 * t + -2 * xV1 * t * x2 + -2 * xV1 * t * xV2 * t + x2 * x2 + 2 * x2 * xV2 * t + xV2 * xV2 * t * t; // res == 4
Теперь нужно найти коэффициенты уравнения. Переносим результат(res) в левую сторону и складываем подобные слагаемые, убираем переменную t.
Код AS3:
var r:Number = res;
var a:Number = xV1*xV1 + -2*xV1*xV2 + xV2*xV2;
var b:Number = 2*x1*xV1 + -2*x1*xV2 + -2*xV1*x2 + 2*x2*xV2;
var c:Number = x1*x1 + -2*x1*x2 + x2*x2 - r;
Вычисляем корни:
Код AS3:
var dX:Number1 = (-b + Math.Sqrt(b*b - 4*a*c))/2*a;
var dX2:Number = (-b - Math.Sqrt(b*b - 4*a*c))/2*a;
Я ожидал, что один из корней будет равен t, то есть 2, но вместо этого получается 768 и 512.
Я уже несколько раз переделывал, но успеха добиться не удалось. Буду рад если кто нибудь поможет найти ошибку.

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

Регистрация: Jan 2013
Сообщений: 322
Код AS1/AS2:
//((x1 + y1 * t) - (x2 + y2 * t))**2 = r
var x1 = 10;
var y1 = 5;
var x2 = 11+5;
var y2 = 15+1;
var t = 4;
var r = Math.pow((x1 + y1 * t) - (x2 + y2 * t), 2);
r === ((x1 + y1 * t) - (x2 + y2 * t)) * ((x1 + y1 * t) - (x2 + y2 * t));
r === (x1 + y1 * t) * (x1 + y1 * t) - 2*(x1 + y1 * t)*(x2 + y2 * t) + (x2 + y2 * t)*(x2 + y2 * t);
r === (y2*y2 - 2*y1*y2 + y1*y1)*t*t + t*(-2*x1*y2 + 2*x1*y1 - 2*x2*y1 + 2*x2*y2) + x1*x1 - 2*x1*x2 + x2*x2;
0 === (y2*y2 - 2*y1*y2 + y1*y1)*t*t + t*(-2*x1*y2 + 2*x1*y1 - 2*x2*y1 + 2*x2*y2) + x1*x1 - 2*x1*x2 + x2*x2 - r;
 
var a = (y2*y2 - 2*y1*y2 + y1*y1);
var b = 2*(-x1*y2 + x1*y1 - x2*y1 + x2*y2);
var c = (x1*x1 - 2*x1*x2 + x2*x2 - r);
 
0 === a*t*t + b*t + c;
 
var r1 = (-b + Math.sqrt(b*b - 4*a*c)) / (2*a);
var r2 = (-b - Math.sqrt(b*b - 4*a*c)) / (2*a);
 
t === r1 || t === r2; // true
Цитата:
var t:Number = 2;
var x1:Number = 2;
var xV1:Number = 2;
отсюда и ошибки, надо брать разные значения

+
Код AS1/AS2:
var a = (y2 - y1) * (y2 - y1);
var b = 2*(x2 - x1) * (y2 - y1);
var c = (x1 - x2) * (x1 - x2) - r;


Последний раз редактировалось nubideus; 16.09.2014 в 20:38.
Старый 17.09.2014, 16:29
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 3  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
Оказалось, всего то забыл 2*a заключить в скобки.

Старый 17.09.2014, 18:19
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 4  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
лол
(не могу трифорс)

Старый 18.09.2014, 13:18
Psijic вне форума Посмотреть профиль Отправить личное сообщение для Psijic Найти все сообщения от Psijic
  № 5  
Ответить с цитированием
Psijic

Регистрация: Aug 2012
Сообщений: 108
Казалось бы, причем здесь flash

Старый 18.09.2014, 13:36
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 6  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Цитата:
Казалось бы, причем здесь flash
А компоненты feathers?

Старый 19.09.2014, 16:40
Psijic вне форума Посмотреть профиль Отправить личное сообщение для Psijic Найти все сообщения от Psijic
  № 7  
Ответить с цитированием
Psijic

Регистрация: Aug 2012
Сообщений: 108
Цитата:
Сообщение от Gerbert Посмотреть сообщение
А компоненты feathers?
Компоненты feathers здесь тем более ни при чем, а вообще если вопрос - как они относятся к flash, так это Adobe Gaming SDK

Старый 19.09.2014, 17:08
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 8  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
При чем sdk? Вам же никто не сказал, что вопрос о компонентах обсуждается, как минимум в другой ветке и как максимум на офф сайте? Какая Вам разница относится это к флешу или нет, Вы идеологический лидер профсоюза флешеров чтоль?)

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

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

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


 


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


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