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

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

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

Регистрация: Oct 2007
Сообщений: 19
Отправить сообщение для Сандра с помощью ICQ
Есть две точки (Point), представляющие собой вектор. Необходимо найти третью точку, которая должна располагаться посередине отрезка, проведенного между двумя этими точками.

Как это лучше всего сделать по-науке? Буду благодарна за кусок кода!

Дело в том, что когда начинаешь это делать ручками, то все получается до тех пор, пока координаты не становятся отрицательными.


Последний раз редактировалось iNils; 10.01.2008 в 18:06.
Старый 10.01.2008, 17:25
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код:
x1 = 5;
y1 = 5;
x2 = 15;
y2 = 15;
////
x3 = x1 + (x2 - x1) / 2;
y3 = y1 + (y2 - y1) / 2;
trace (x3);
trace (y3);
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 10.01.2008, 18:02
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 3  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Код:
ActionScript 2.0 Language Reference 
        
  
ActionScript classes > Point (flash.geom.Point) > subtract (Point.subtract method)   
 

subtract (Point.subtract method)
public subtract(v:Point) : Point

Subtracts the coordinates of another point from the coordinates of this point to create a new point.

Availability: ActionScript 1.0; Flash Player 8

Parameters
v:Point - The point to be subtracted.

Returns
Point - The new point.

Example
The following example creates point_3 by subtracting point_2 from point_1. 

import flash.geom.Point;
var point_1:Point = new Point(4, 8);
var point_2:Point = new Point(1, 2);
var resultPoint:Point = point_1.subtract(point_2);
trace(resultPoint.toString()); // (x=3, y=6)

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

Регистрация: Oct 2007
Сообщений: 19
Отправить сообщение для Сандра с помощью ICQ
Спасибо! А теперь немного посложнее задача, есть переменные a и b:

Код:
var a = _root._xmouse;
var b = _root._ymouse;
Как найти координаты x3 и y3, таким образом, чтобы они лежали на заданном отрезке (который, как следует из самого первого условия задан координатами x1, y1 и x2, y2) и чтобы курсор мышки был максимально приближен к этой точке?

Старый 11.01.2008, 00:27
koIIImarik вне форума Посмотреть профиль Отправить личное сообщение для koIIImarik Посетить домашнюю страницу koIIImarik Найти все сообщения от koIIImarik
  № 5  
Ответить с цитированием
koIIImarik
 
Аватар для koIIImarik

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
Вы хотите программно навести курсор на эту точку, или что? А найти точку:

Код:
x1 = 5;
y1 = 5;
x2 = 15;
y2 = 15;
////
x3 = (x2-x1)+x2;
y3 = (y2-y1)+y2;
trace (x3);
trace (y3);
На сколько я понимаю так. Ну или, делайте x2*2-x1, и так же с y2.

Старый 11.01.2008, 01:14
Freeeeeeeman вне форума Посмотреть профиль Отправить личное сообщение для Freeeeeeeman Найти все сообщения от Freeeeeeeman
  № 6  
Ответить с цитированием
Freeeeeeeman
[+4 05.12.07]
[+1 11.01.08]

Регистрация: Nov 2007
Сообщений: 51
Делается так, по законам геометрии. Уже моск не работает, чтобы формулы вспоминать.
Для этого надо находить точки пересечения катетов с вектором, чтобы узнать их длину, после узнать гипотенузу, проецировать на вектор, узнать расположение точки, если я не ошибаюсь. Хотя мне кажется, что можно намного проще.
Изображения
 


Последний раз редактировалось Freeeeeeeman; 11.01.2008 в 01:20.
Старый 11.01.2008, 02:06
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
var line_mc:MovieClip = _root.createEmptyMovieClip('line_mc',0);
var middle_mc:MovieClip = rct(this,10,10,0xff,50);
function rct(mc:MovieClip,w:Number,h:Number,c:Number,a:Number):MovieClip {
	var _mc:MovieClip = mc.createEmptyMovieClip("mc"+mc.getNextHighestDepth(),mc.getNextHighestDepth());
	_mc.beginFill(c,a);
	_mc.lineTo(w,0);
	_mc.lineTo(w,h);
	_mc.lineTo(0,h);
	_mc.lineTo(0,0);
	_mc.endFill();
	return _mc;
}
middle_mc.lineStyle(1,0,100);
middle_mc.lineTo(10,10);
middle_mc.moveTo(0,10);
middle_mc.lineTo(10,0);
//
function drawRotatedLine():Void {
	line_mc.clear();
	line_mc.lineStyle(1,0,100);
	line_mc.moveTo(Stage.width/2,Stage.height/2);
	line_mc.lineTo(_xmouse,_ymouse);
	middle_mc._x = Stage.width/2-(Stage.width/2-_xmouse)/2-5;
	middle_mc._y = Stage.height/2-(Stage.height/2-_ymouse)/2-5;
}
_root.onMouseMove = drawRotatedLine;
__________________
Hell is the possibility of sanity

Старый 11.01.2008, 02:30
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Freeeeeeeman получает плюс за моск.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 11.01.2008, 03:26
goarcade вне форума Посмотреть профиль Отправить личное сообщение для goarcade Найти все сообщения от goarcade
  № 9  
Ответить с цитированием
goarcade

Регистрация: Sep 2006
Сообщений: 32
Цитата:
Сообщение от Сандра
Спасибо! А теперь немного посложнее задача, есть переменные a и b:

Код:
var a = _root._xmouse;
var b = _root._ymouse;
Как найти координаты x3 и y3, таким образом, чтобы они лежали на заданном отрезке (который, как следует из самого первого условия задан координатами x1, y1 и x2, y2) и чтобы курсор мышки был максимально приближен к этой точке?
Код:
onEnterFrame = function () {
	var dx:Number = b._x-a._x;
	var dy:Number = b._y-a._y;
	var t:Number = (_xmouse*dx-a._x*dx+_ymouse*dy-a._y*dy)/(dx*dx+dy*dy);
	if(t>1)t=1;
	if(t<0)t=0;
	c._x = a._x+(b._x-a._x)*t;
	c._y = a._y+(b._y-a._y)*t;
};

mcDrag("a");a._x = 50; a._y = 50;
mcDrag("b");b._x = 150; b._y = 150;
mcDrag("c");delete c.onPress;

function mcDrag(name:String)
{
	var mc:MovieClip = _root.createEmptyMovieClip(name,_root.getNextHighestDepth());
	mc.beginFill(0xcccccc*Math.random());
	var r:Number = 5;
	mc.moveTo(-r,-r);
	mc.lineTo( r,-r);
	mc.lineTo( r, r);
	mc.lineTo(-r, r);
	mc.endFill();
	mc.onPress=function(){this.startDrag()}
	mc.onMouseUp=function(){this.stopDrag()}	
}
Если непонятна математика - могу объяснить

Старый 11.01.2008, 04:20
alekslitvinenk вне форума Посмотреть профиль Отправить личное сообщение для alekslitvinenk Посетить домашнюю страницу alekslitvinenk Найти все сообщения от alekslitvinenk
  № 10  
Ответить с цитированием
alekslitvinenk
 
Аватар для alekslitvinenk

Регистрация: Oct 2005
Адрес: Москва
Сообщений: 491
Отправить сообщение для alekslitvinenk с помощью ICQ Отправить сообщение для alekslitvinenk с помощью AIM Отправить сообщение для alekslitvinenk с помощью Skype™
А не прще-ли использовать
Код:
Point.interpolate(pt1, pt2, 0.5);
для нахождения координат точки середины отрезка ?

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

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

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


 


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


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