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

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

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

Регистрация: Jan 2007
Адрес: Украина. Днепр
Сообщений: 8
Отправить сообщение для Romias с помощью ICQ
По умолчанию Задачка на отрезки

Известны координаты начала и конца Отрезка A и начала и конца Отрезка B. Необходимо узнать пересекаются ли они и есла да - то в какой точке. (ax1,ay1) (ax2,ax2) (bx1,by1) (bx2,by2)
Помогите плз.

Старый 05.01.2007, 14:57
bbexp вне форума Посмотреть профиль Отправить личное сообщение для bbexp Посетить домашнюю страницу bbexp Найти все сообщения от bbexp
  № 2  
Ответить с цитированием
bbexp
 
Аватар для bbexp

Регистрация: May 2006
Адрес: Город О
Сообщений: 169
О, уравнения ))

1. Составить уравнение прямой для каждого отрезка.
2.Поскольку получатся простые линейные функции - благополучно написать алгоритм, который решит систему линейных уравнений. Решение дас два числа - икс и игрек. Это будет точка пересечения прямых, на которой лежат отрезки. И проверить если эта точка входит в множество точек для каждого отрезка - стало быть пересекаются отрезки именно в этой точке. А если не входит хотябы в один - значит не пересекаются.
(Со множеством все довольно просто - координаты точки должны лежать между координатами концов отрезков для каждого отдельного случая (по иксам и по игрекам)

Готового решения у меня нет - но алгоритм таков.
__________________
Работа * Работы * О работе

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

Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
алгоритм
http://algolist.manual.ru/maths/geom...lineline2d.php

Старый 05.01.2007, 17:21
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Можно и просто нарисовать и хиттестить, по-идее так тоже работать будет.
__________________
Hell is the possibility of sanity

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

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

Старый 05.01.2007, 19:58
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 6  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
http://as3.ru/?p=6
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

Старый 06.01.2007, 00:38
Romias вне форума Посмотреть профиль Отправить личное сообщение для Romias Найти все сообщения от Romias
  № 7  
Ответить с цитированием
Romias
 
Аватар для Romias

Регистрация: Jan 2007
Адрес: Украина. Днепр
Сообщений: 8
Отправить сообщение для Romias с помощью ICQ
А вот мой вариант:
Код:
onClipEvent (load) {
	drow = false;
	number = 0;
	_root.my_clip._x = this._x;
	_root.my_clip._y = this._y;
	_root._quality = "BEST";
	_root.createEmptyMovieClip('my_clip', 0);
}
onClipEvent (mouseDown) {
	if (drow == false) {
		if (number == 2) {
			_root.createEmptyMovieClip('my_clip', 0);
			number = 0;
		}
		if (number == 0) {
			ax1 = _root._xmouse;
			ay1 = _root._ymouse;
		}
		if (number == 1) {
			bx1 = _root._xmouse;
			by1 = _root._ymouse;
		}
		c = 16777215*Math.random();
		_root.my_clip.lineStyle(2, c, 100);
		_root.my_clip.moveTo(_root._xmouse, _root._ymouse);
		_x = _root._xmouse;
		_y = _root._ymouse;
		drow = true;
	} else {
		if (number == 0) {
			ax2 = _root._xmouse;
			ay2 = _root._ymouse;
		}
		if (number == 1) {
			bx2 = _root._xmouse;
			by2 = _root._ymouse;
			k1 = (ay1-ay2)/(ax1-ax2);
			b1 = ay1-k1*ax1;
			k2 = (by1-by2)/(bx1-bx2);
			b2 = by1-k2*bx1;
			if (k1 == k2) {
				if (b1 == b2) {
					trace('DA, Sovpadaut');
				} else {
					trace('NET!');
				}
			} else {
				x = (b1-b2)/(k2-k1);
				y = (k2*b1-k1*b2)/(k2-k1);
				if ((x>=((ax1<ax2) ? ax1 : ax2)) & (x>=((bx1<bx2) ? bx1 : bx2)) & (x<=((ax1>ax2) ? ax1 : ax2)) & (x<=((bx1>bx2) ? bx1 : bx2)) & (y>=((ay1<ay2) ? ay1 : ay2)) & (y>=((by1<by2) ? by1 : by2)) & (y<=((ay1>ay2) ? ay1 : ay2)) & (y<=((by1>by2) ? by1 : by2))) {
					trace('DA');
				} else {
					trace('NET');
				}
			}
		}
		_root.my_clip.moveTo(this._x, this._y);
		_root.my_clip.lineTo(_root._xmouse, _root._ymouse);
		_x = _root._xmouse;
		_y = _root._ymouse;
		drow = false;
		number += 1;
	}
}
onClipEvent (enterFrame) {
	if (drow == false) {
		_x = _root._xmouse;
		_y = _root._ymouse;
	}
}

Старый 06.01.2007, 03:33
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Romias, в это разделе запрещено использование команд семилетней давности.

Старый 06.01.2007, 09:23
N!kE вне форума Посмотреть профиль Отправить личное сообщение для N!kE Найти все сообщения от N!kE
  № 9  
Ответить с цитированием
N!kE

Регистрация: Jun 2006
Сообщений: 107
Код:
_root.createEmptyMovieClip("clip", 1);
clip.lineStyle(0, 0x000000, 100);
line1 = {};
line1.m = 1;
line1.b = 100;
line2 = {};
line2.m = 3;
line2.b = 50;
function findY(line, x) {
	var y = line.m*x+line.b;
	return y;
}
function drawLine(line) 
	var x = 300;
	var y = findY(line, x);
	var x = 0;
	var y = findY(line, x);
	clip.lineTo(x, y);
}
function findIntersection(line_a, line_b) {
	var x = (line_b.b-line_a.b)/(line_a.m-line_b.m);
	var y = line_a.m*x+line_a.b;
	dot._x = x; 
	dot._y = y;
}
drawLine(line1);
drawLine(line2);
findIntersection(line1, line2);
dot._x & dot._y - координаты точки пересечения


Последний раз редактировалось N!kE; 06.01.2007 в 09:25.
Старый 06.01.2007, 10:54
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 10  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Romias, N!kE - садитесь, 2!
учите планиметрию и AS.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

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

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

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


 


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


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