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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Dec 2003
Адрес: Тбилиси, Грузия
Сообщений: 36
Отправить сообщение для Leo45 с помощью ICQ
По умолчанию Искажение перспективы

Народ, киньте пару ссылок, про построения перспективы (Искажение, точки схода и т.д.)
__________________
The truth is out there...

Старый 27.01.2004, 17:39
TTS вне форума Посмотреть профиль Отправить личное сообщение для TTS Найти все сообщения от TTS
  № 2  
TTS
 
Аватар для TTS

Регистрация: Jan 2002
Сообщений: 1,323
x0, y0, z0 - координаты точки в трехмере
R0 - z-координата глаза
Re - расстояние от глаза до экрана
xf, yf - координаты точки схода
xe, ye - координаты центра экрана

K=Re/(R0+z0);
x=xe+K*(x0-xf)+xf;
y=ye+K*(y0-yf)+yf;

x, y - координаты точки на экране

Если мувик в центре и точка схождения там же, то
x=K*x0;
y=K*y0;

И все дела.
__________________
ВКЛЮЧИ МОЗГИ!!!
Одноразовых граблей не бывает. На большинство из них уже кто-то наступал. (c) Dindin

Старый 27.01.2004, 18:39
Leo45 вне форума Посмотреть профиль Отправить личное сообщение для Leo45 Найти все сообщения от Leo45
  № 3  
Leo45

Регистрация: Dec 2003
Адрес: Тбилиси, Грузия
Сообщений: 36
Отправить сообщение для Leo45 с помощью ICQ
... Наверно, я неправильно поставил вопрос:
Я делаю куб, который можно врашать, но я знаю только часть законов искажения перспективы и куб получился не-даделанный (см. исходник), и может-быть кто-нибудь знает, где лежит информация об этом.
Вложения
Тип файла: zip cube.zip (4.8 Кб, 798 просмотров)
__________________
The truth is out there...

Старый 28.01.2004, 02:05
opex вне форума Посмотреть профиль Отправить личное сообщение для opex Найти все сообщения от opex
  № 4  
opex
[+1.3 05.04.09]
 
Аватар для opex

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
Код:
stop();
// создание  3 масивов с координатами  х у z
x = [-50, 50, 50, -50, -50, 50, 50, -50];
y = [50, 50, -50, -50, 50, 50, -50, -50];
z = [-50, -50, -50, -50, 50, 50, 50, 50];
//смещаем  главный слой  для того чтобы  куб был в центре 
_root._x = 150;
_root._y = 150;
// глубина ну дает искожение  эфект горизонта
s = 200;
// углы поворота
pX = 0.1;
pY = -0.2;
_root.onEnterFrame = function() {
	pX = -(0-_ymouse)/50;
	pY = (0-_xmouse)/50;
	// чистим  главный уровень
	_root.clear();
	//запускаем цикл для обновление координат прошета их новых положений 
	for (i=0; i<8; i++) {
		r = Math.PI/180;
		// поворот вокруг оу
		ky = y[i]*Math.cos(pX*r)-z[i]*Math.sin(pX*r);
		//поворот вокруг ох
		kx = x[i]*Math.cos(pY*r)+(y[i]*Math.sin(pX*r)+z[i]*Math.cos(pX*r))*Math.sin(pY*r);
		//поворот вокруг oz
		kz = -x[i]*Math.sin(pY*r)+(y[i]*Math.sin(pX*r)+z[i]*Math.cos(pX*r))*Math.cos(pY*r);
		//сохроняем переменные в  масив
		x[i] = kx;
		z[i] = kz;
		y[i] = ky;
	}
	//стиль линий :)
	lineStyle(0, 0xff0000, 100);
	//дальше идет  рисование сторон  куба  
	//так как их 6 рисуем шесть квадратов  
	//с  помощю точек из масива 
	// 1 
	moveTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
	lineTo(x[1]*(s/(s+z[1])), y[1]*(s/(s+z[1])));
	lineTo(x[2]*(s/(s+z[2])), y[2]*(s/(s+z[2])));
	lineTo(x[3]*(s/(s+z[3])), y[3]*(s/(s+z[3])));
	lineTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
	//2
	moveTo(x[4]*(s/(s+z[4])), y[4]*(s/(s+z[4])));
	lineTo(x[5]*(s/(s+z[5])), y[5]*(s/(s+z[5])));
	lineTo(x[6]*(s/(s+z[6])), y[6]*(s/(s+z[6])));
	lineTo(x[7]*(s/(s+z[7])), y[7]*(s/(s+z[7])));
	lineTo(x[4]*(s/(s+z[4])), y[4]*(s/(s+z[4])));
	//3
	moveTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
	lineTo(x[4]*(s/(s+z[4])), y[4]*(s/(s+z[4])));
	lineTo(x[5]*(s/(s+z[5])), y[5]*(s/(s+z[5])));
	lineTo(x[1]*(s/(s+z[1])), y[1]*(s/(s+z[1])));
	lineTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
	//4
	moveTo(x[2]*(s/(s+z[2])), y[2]*(s/(s+z[2])));
	lineTo(x[6]*(s/(s+z[6])), y[6]*(s/(s+z[6])));
	lineTo(x[7]*(s/(s+z[7])), y[7]*(s/(s+z[7])));
	lineTo(x[3]*(s/(s+z[3])), y[3]*(s/(s+z[3])));
	lineTo(x[2]*(s/(s+z[2])), y[2]*(s/(s+z[2])));
	//5
	moveTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
	lineTo(x[3]*(s/(s+z[3])), y[3]*(s/(s+z[3])));
	lineTo(x[7]*(s/(s+z[7])), y[7]*(s/(s+z[7])));
	lineTo(x[4]*(s/(s+z[4])), y[4]*(s/(s+z[4])));
	lineTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
	//6
	moveTo(x[1]*(s/(s+z[1])), y[1]*(s/(s+z[1])));
	lineTo(x[2]*(s/(s+z[2])), y[2]*(s/(s+z[2])));
	lineTo(x[6]*(s/(s+z[6])), y[6]*(s/(s+z[6])));
	lineTo(x[5]*(s/(s+z[5])), y[5]*(s/(s+z[5])));
	lineTo(x[1]*(s/(s+z[1])), y[1]*(s/(s+z[1])));
};
вот те кубик смотри
__________________
Бойтесь китайцев, компы приносящих!

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

Регистрация: Dec 2003
Адрес: Тбилиси, Грузия
Сообщений: 36
Отправить сообщение для Leo45 с помощью ICQ
opex, спасибо тебе огромное, это именно то, что мне нужно было, но я хочу именно теорию, чтоб потом самому въехать что к чему.
__________________
The truth is out there...

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

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

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


 


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


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