Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 18.06.2009, 23:10   #1
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Сортировка координат

туплю...как можно просортировать объекты типа, имеющие x, y и z?

типа есть:

60 73 29
-50 20 48
-100 82 4
-100 29 4
-100 29 6

а надо:

-100 29 4
-100 29 6
-100 82 4
-50 20 48
60 73 29
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 18.06.2009, 23:31   #2
jimon
 
Сообщений: n/a
Ответ: Сортировка координат

что-то я не понимаю каким образом ты хочешь сортировать
если по растоянию то сортируй по ключу D = x*x+y*y+z*z
 
Ответить с цитированием
Старый 18.06.2009, 23:53   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Сортировка координат

60   73   29   
-50  20   48   
-100 82   4    
-100 29   4    
-100 29   6    

-100 29   4    
-100 29   6    
-100 82   4    
-50  20   48   
60   73   29
Вариант номер один:
Data 60, 73, 29
Data -50, 20, 48
Data -100, 82, 4
Data -100, 29, 4
Data -100, 29, 6

Global XS%=3
Global YS%=5
Dim p(XS,YS)

Function debug_matrix()
	Local s$
	For y=1 To YS
		s=""
		For x=1 To XS
			s=s+LSet(p(x,y),5)
		Next
		DebugLog s
	Next
End Function

Function PrevColCor%(z%,i%)
	If z=1 Return True
	If p(z-1,i)=p(z-1,i+1)
		Return True
	EndIf
	Return False
End Function

For y=1 To YS
	For x=1 To XS
		Read p(x,y)
	Next
Next

debug_matrix()
DebugLog ""
;====================
For z=1 To XS
	For j=2 To YS
		For i=1 To YS-j+1
			If p(z,i)>p(z,i+1) And PrevColCor(z,i)
				For r=z To XS
					Local t%=p(r,i)
					p(r,i)=p(r,i+1)
					p(r,1+i)=t
				Next
			EndIf
		Next
	Next
Next
;====================
debug_matrix()
DebugLog ""
WaitKey()
End
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (19.06.2009)
Старый 19.06.2009, 00:01   #4
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Сортировка координат

Второй способ с ключом (как сказал Джимон), но ключ составляется по-другому:
D=(x-min)*(R^2)+(x-min)*(R^1)+(x-min)*(R^0)
аналогично, например RGB-системе, где
min - миниальное возможное значение координаты (для rgb =0)
R - разброс значений (для rgb =256)

Далее производится сортировка ключей и их декомпозиция на координаты.
Метод требовательный к памяти но при должной оптимизации довльно быстрый.

Вообще говоря, ТЗ весьма размыто.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (19.06.2009)
Старый 19.06.2009, 00:05   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Сортировка координат

функцию
Function PrevColCor%(z%,i%)
	If z=1 Return True
	If p(z-1,i)=p(z-1,i+1)
		Return True
	EndIf
	Return False
End Function
в первом методе можно выродить до проверки тождества
p(z-1,i)=p(z-1,i+1)
если матрица слева имеет буферный столбец забитый одинаковыми значениями (в том же б3д можно было сдлать именно так).
Также, используемую в семпле сортировку методом пузырька можно заменить на другую, исходя из априорных данных об упорядоченности.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (19.06.2009)
Старый 21.06.2009, 00:28   #6
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Сортировка координат

-------------
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер

Последний раз редактировалось Mr_F_, 21.06.2009 в 01:44. Причина: разобрался - спасибо первому методу импера
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (21.06.2009)
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка полигонов при альфе Amatsu 3D-программирование 3 21.03.2009 12:17
Преобразование координат в D3D mr.DIMAS C++ 2 13.10.2008 18:04
Изменение координат Ентити(Меша) в DLL GoodWin 3D-программирование 3 07.11.2006 17:02
Трабла с подгрузкой координат из файла Conan Fedr 3D-программирование 12 24.02.2006 22:31
вычисление UV координат Платон Разработка LIB 2 26.01.2006 22:17


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com