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

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

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

Регистрация: Apr 2003
Адрес: DC
Сообщений: 4,489
По умолчанию Где взять объяснение эффекта Blob

Где? Как в файле. Смысл где можно прочитать?
Вложения
Тип файла: zip blobs.zip (13.5 Кб, 179 просмотров)
__________________
flash/flex/unity

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

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
*** найдеш инфу скажеш тоже хочу узнать как это булькается

____________________________
список наград предыдущего оратора видишь ?
__________________
Бойтесь китайцев, компы приносящих!


Последний раз редактировалось Nox Noctis; 08.12.2003 в 17:15.
Старый 08.12.2003, 17:14
opex вне форума Посмотреть профиль Отправить личное сообщение для opex Найти все сообщения от opex
  № 3  
opex
[+1.3 05.04.09]
 
Аватар для opex

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
хотя что похожее видел

на
http://home.onego.ru/~cleoaq/portfolio/labs/blobs1.html
__________________
Бойтесь китайцев, компы приносящих!

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

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
даже код есть вот

Код:
function init() {
	grid = [];
	big_array_base = [];
	value_array_base = [];
	gridXsize = gridYsize=13;
	workWidth = 490;
	workHeight = 490;
	cellSize = workWidth/gridXsize;
	for (gridX=0; gridX<gridXsize+2; gridX++) {
		grid[gridX] = [];
		big_array_base[gridX] = [];
		value_array_base[gridX] = [];
		for (gridY=0; gridY<gridYsize+2; gridY++) {
			var cellX = cellSize*gridX;
			var cellY = cellSize*gridY;
			grid[gridX][gridY] = {x:cellX, y:cellY, factor:(cellX*cellX+cellY*cellY)};
			big_array_base[gridX][gridY] = 0;
			value_array_base[gridX][gridY] = 0;
		}
	}
	reDraw();
}
function reDraw() {
	_root.clear();
	big_array = [];
	value_array = [];
	for (gridX=0; gridX<gridXsize+2; gridX++) {
		big_array[gridX] = big_array_base[gridX].slice();
		value_array[gridX] = value_array_base[gridX].slice();
	}
	for (var pCount = 0; pCount<pCircles.length; pCount++) {
		pCircles[pCount].factor = pCircles[pCount].centerX*pCircles[pCount].centerX+pCircles[pCount].centerY*pCircles[pCount].centerY;
	}
	for (var pCount = 0; pCount<pCircles.length; pCount++) {
		var tmpx = int(pCircles[pCount].centerx/cellSize);
		var tmpy = int(pCircles[pCount].centery/cellSize);
		getCell(tmpx, tmpy);
	}
}
function getCell(cellX, cellY) {
	if (big_array[cellX][cellY] == 0) {
		big_array[cellX][cellY] = 1;
		var diff = [[0, 0], [1, 0], [1, 1], [0, 1]];
		corners = 0;
		for (var i = 0; i<4; i++) {
			var cellTmp = value_array[cellX+diff[i][0]][cellY+diff[i][1]];
			if (cellTmp == 0) {
				cellTmp = value_array[cellX+diff[i][0]][cellY+diff[i][1]]=getCellForce(cellX+diff[i][0], cellY+diff[i][1]);
			}
			if (cellTmp>1) {
				//trace(cellTmp);
				corners += Math.pow(2, i);
			}
		}
		// drawing stuff
		if (corners == 15) {
			getCell(cellX, cellY-1);
		} else {
			linesArray = [[], [0, 3], [1, 0], [3, 1], [1, 2], [3, 0, 1, 2], [0, 2], [3, 2], [2, 3], [2, 0], [0, 1, 2, 3], [2, 1], [1, 3], [1, 0], [0, 3]];
			var ourLines = linesArray[corners];
			for (var l = 0; l<ourLines.length; l=l+2) {
				if (ourLines[l] == 0) {
					sx = grid[cellX][cellY].x+cellSize/(Math.abs(value_array[cellX+1][cellY]-1)/Math.abs(value_array[cellX][cellY]-1)+1);
					sy = grid[cellX][cellY].y;
				} else if (ourLines[l] == 1) {
					sx = grid[cellX+1][cellY].x;
					sy = grid[cellX+1][cellY].y+cellSize/(Math.abs(value_array[cellX+1][cellY+1]-1)/Math.abs(value_array[cellX+1][cellY]-1)+1);
				} else if (ourLines[l] == 2) {
					sx = grid[cellX+1][cellY+1].x-cellSize/(Math.abs(value_array[cellX][cellY+1]-1)/Math.abs(value_array[cellX+1][cellY+1]-1)+1);
					sy = grid[cellX][cellY+1].y;
				} else if (ourLines[l] == 3) {
					sx = grid[cellX][cellY].x;
					sy = grid[cellX][cellY+1].y-cellSize/(Math.abs(value_array[cellX][cellY]-1)/Math.abs(value_array[cellX][cellY+1]-1)+1);
				}
				// calc end of line
				if (ourLines[l+1] == 0) {
					ex = grid[cellX][cellY].x+cellSize/(Math.abs(value_array[cellX+1][cellY]-1)/Math.abs(value_array[cellX][cellY]-1)+1);
					ey = grid[cellX][cellY].y;
				} else if (ourLines[l+1] == 1) {
					ex = grid[cellX+1][cellY].x;
					ey = grid[cellX+1][cellY].y+cellSize/(Math.abs(value_array[cellX+1][cellY+1]-1)/Math.abs(value_array[cellX+1][cellY]-1)+1);
				} else if (ourLines[l+1] == 2) {
					ex = grid[cellX+1][cellY+1].x-cellSize/(Math.abs(value_array[cellX][cellY+1]-1)/Math.abs(value_array[cellX+1][cellY+1]-1)+1);
					ey = grid[cellX][cellY+1].y;
				} else if (ourLines[l+1] == 3) {
					ex = grid[cellX][cellY].x;
					ey = grid[cellX][cellY+1].y-cellSize/(Math.abs(value_array[cellX][cellY]-1)/Math.abs(value_array[cellX][cellY+1]-1)+1);
				}
				_root.lineStyle(6, 0x000080, 100);
				subStep = 0;
				_root.moveTo(sx+subStep, sy+subStep);
				_root.lineTo(ex+subStep, ey+subStep);
				_root.lineStyle(4, 0x8080FF, 100);
				_root.moveTo(sx, sy);
				_root.lineTo(ex, ey);
				var diffCell = [[0, -1], [1, 0], [0, 1], [-1, 0]];
				getCell(cellX+diffCell[ourLines[l]][0], cellY+diffCell[ourLines[l]][1]);
				getCell(cellX+diffCell[ourLines[l+1]][0], cellY+diffCell[ourLines[l+1]][1]);
			}
		}
	}
}
function getCellForce(parX, parY) {
	var a = 0;
	for (pCount=0; pCount<pCircles.length; pCount++) {
		a += pCircles[pCount].radius*pCircles[pCount].radius/(grid[parX][parY].factor-2*grid[parX][parY].x*pCircles[pCount].centerX-2*grid[parX][parY].y*pCircles[pCount].centerY+pCircles[pCount].factor);
	}
	return a;
}
function rand(value) {
	return (-1+2*(random(100)>50))*(3+random(value));
}
function addCircle() {
	pCircles.push({dx:rand(10), dy:rand(10), centerX:workWidth/2, centerY:workWidth/2, radius:50});
}
pCircles = [];
init();
_root.onMouseDown = function() {
	addCircle();
};
_root.onEnterFrame = function() {
	for (var pCount = 0; pCount<pCircles.length; pCount++) {
		pCircles[pCount].centerX += pCircles[pCount].dX+random(1);
		pCircles[pCount].centerY += pCircles[pCount].dy-random(1);
		if ((pCircles[pCount].centerX+pCircles[pCount].radius)>WorkWidth || (pCircles[pCount].centerX-pCircles[pCount].radius)<10) {
			pCircles[pCount].dX *= -1;
			pCircles[pCount].centerX += pCircles[pCount].dX;
		}
		if ((pCircles[pCount].centery+pCircles[pCount].radius)>WorkHeight || (pCircles[pCount].centery-pCircles[pCount].radius)<10) {
			pCircles[pCount].dy *= -1;
			pCircles[pCount].centerY += pCircles[pCount].dy;
		}
	}
	reDraw();
};
для любителей чего подлинее
__________________
Бойтесь китайцев, компы приносящих!

Старый 09.12.2003, 07:03
nuran вне форума Посмотреть профиль Отправить личное сообщение для nuran Найти все сообщения от nuran
  № 5  
nuran

Регистрация: Apr 2003
Адрес: DC
Сообщений: 4,489
Цитата:
Оригинал написал(а) opex
хотя что похожее видел

на
http://home.onego.ru/~cleoaq/portfolio/labs/blobs1.html
совсем не то, я же не идиот, что бы просить мне описать этот эффект от Дениски, я говорю о нормальном эффекте blob, про его физику, а это вообще не капля. Капля при объединении увеличивается в объёме, растягивается, в общем нужна действительно настоящая физика.
У того же Дениски есть намного более продвинутая капля, что-то типа этого мне и нужно объяснение. Объяснение, а не код.

http://cleoag.com/labs/flashmx/011/
__________________
flash/flex/unity

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

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
ну извини такто и из кода можно понять о принципе
__________________
Бойтесь китайцев, компы приносящих!

Старый 10.12.2003, 00:39
Пушистик вне форума Посмотреть профиль Отправить личное сообщение для Пушистик Посетить домашнюю страницу Пушистик Найти все сообщения от Пушистик
  № 7  
Пушистик
Bumble Bee
[+1 05.07.06]
 
Аватар для Пушистик

Регистрация: May 2003
Адрес: Третья планета от Солнца
Сообщений: 1,254
Отправить сообщение для Пушистик с помощью ICQ
По умолчанию :\

а у меня код с ошибками показывает....дайте нормальный
__________________
Portfolio

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

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
вот те исходние
Вложения
Тип файла: zip metaballs4.zip (6.3 Кб, 126 просмотров)
__________________
Бойтесь китайцев, компы приносящих!

Старый 13.12.2003, 14:10
nuran вне форума Посмотреть профиль Отправить личное сообщение для nuran Найти все сообщения от nuran
  № 9  
nuran

Регистрация: Apr 2003
Адрес: DC
Сообщений: 4,489
Я подумал маленько ... как я понял, этот эффект основан на
нахождении контура (выпуклой оболочки) от энного количества точек. Точки
соответственно задаются в виде шариков, при их определённом
удалении друг от друга происходит расщепление контура. В общем
по крайней мере так тоже можно реализовать этот эффект.
100% гарантирую. Но сложно ёпрст.
Вначале нужно написать процедурку для нахождения контура от
массива точек. Далее задать эти точки в виде, допусти двух шаров.
Шары будут у нас отражаться от боковых стенок (ну это как два пальца..),
При сближении, добусти на 1.5 радиуса точки будут объединяться
в один контур. И контур соответственно из двух шаров превратится
в одну каплю. При удалении шаров, допустим на расстояние 1.5 радиуса
и больше контур опять расщепляется на два шара. Вроде так.

Реализую в ближайший месяц этот эффект.

Nuran '2003 | All Rights Reserved.
__________________
flash/flex/unity

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

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
да да займись что очень кложно напишеш сообщи
__________________
Бойтесь китайцев, компы приносящих!

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

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

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


 


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


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