Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-05-2009, 12:52   #1 (permalink)
°
 
Benutzerbild von echo5-7
 
Registriert seit: Aug 2002
Ort: Baden-Baden
Beiträge: 4.306
Farben sortieren?

Hi,

ich hab grade aus Spaß die Farbewerte eines Pixelbildes mit Array.sort(Array.NUMERIC); der Größe nach Auflisten lassen. Ich war etwas über das Resultat erstaunt, weil ich eine Sortierung nach HSV erwartet hätte. Stattdessen hat er mit die ganze Hexadezimalwerte tatsächlich der Größe nach sortiert. (Was ja auch richtig ist.)

Jetzt die Frage:
Wie würdet ihr vorgehen, wenn ihr einen Stapel an Hex Werten in folgender Reihenfolge sortieren wollen würdet => Schwarz RGB Weiß?

Muss man die Werte da erst nach HSV konvertieren, dann sortieren, oder kann man die Dinge auch direkt als Hexwert abhandeln?

Danke
echo

so siehts aus:

__________________

LRRM | BLOG | FACEBOOK | TWITTER | G+ | INSTACANV.AS

Geändert von echo5-7 (19-05-2009 um 13:03 Uhr)
echo5-7 ist offline   Mit Zitat antworten
Alt 19-05-2009, 18:50   #2 (permalink)
Raven-Kid
 
Benutzerbild von [RK]
 
Registriert seit: Feb 2006
Beiträge: 350
ohne jetzt eine konkrete Antwort zu haben will ich nur darauf Aufmerksam machen das du zumindest im RGB Farbraum die Farben nicht liniar nach Helligkeit sortieren kannst. Jede einzelne Farbe kann zu schwarz sowie zu weiß übergehen ...
[RK] ist offline   Mit Zitat antworten
Alt 19-05-2009, 21:03   #3 (permalink)
°
 
Benutzerbild von echo5-7
 
Registriert seit: Aug 2002
Ort: Baden-Baden
Beiträge: 4.306
hmmm.... ok, das wird wohl dann auf HSV hinauslaufen. Oder vielleicht finde ich beim scripten eine möglichkeit das ganze nicht erst umrechnen zu müssen, um es dann in richtiger reihenfolge zurück rechnen zu dürfen.
__________________

LRRM | BLOG | FACEBOOK | TWITTER | G+ | INSTACANV.AS
echo5-7 ist offline   Mit Zitat antworten
Alt 19-05-2009, 23:09   #4 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg
Beiträge: 4.386
Seltsam, müssten in deinem Bild nicht immer rote Farbtöne ganz am Anfang, oder ganz am Ende sein? (entspricht schließlich den führenden Stellen in Hex)

Wie sollen denn Farben ähnlicher Helligkeit untereinandern sortiert werden?

Warum sollte man sowas machen wollen?
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 20-05-2009, 07:05   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.275
Zitat:
Zitat von Janoscharlipp Beitrag anzeigen
Warum sollte man sowas machen wollen?
Ich habe in Programmierforen eines festgestellt - diese Frage stellt man nicht
Omega Psi ist offline   Mit Zitat antworten
Alt 20-05-2009, 09:38   #6 (permalink)
Raven-Kid
 
Benutzerbild von [RK]
 
Registriert seit: Feb 2006
Beiträge: 350
Zitat:
Zitat von Omega Psi Beitrag anzeigen
Ich habe in Programmierforen eines festgestellt - diese Frage stellt man nicht
haha! absolut x)
Es gibt einfach immer irgendwie einen Grund!
[RK] ist offline   Mit Zitat antworten
Alt 20-05-2009, 09:52   #7 (permalink)
°
 
Benutzerbild von echo5-7
 
Registriert seit: Aug 2002
Ort: Baden-Baden
Beiträge: 4.306
tjoa, warum stelllt jemand eine million domino steine auf, und andere schauen sich dann an, wie die umfallen....

was mich eben verwundert hat, war die struktur die da entsteht. ich hatte eigentlich erwartet, dass da in den zeilen irgendeine abstufung entsteht, und nicht diese harten brüche....

hier mal die klasse...

Code:
package de.kai_reinhardt
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;	
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.MouseEvent;
	
	
	[SWF(width = "600", height = "600", backgroundColor = '0xFFFFFF', frameRate = '1')]
	
	public class CompletlyRandomValue extends Sprite 
	{

		private var bmpd : BitmapData;
		private var bmpd_output : BitmapData;
		private var bmp : Bitmap;
		private var bmp_output : Bitmap;
		private var output : Sprite;
		private var storrage : Array;
		private var _width : int;
		private var _height : int;
		
				
		public function CompletlyRandomValue():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);

			output = new Sprite ();
			storrage = [];
			
			_width = 600;
			_height = 600;
			
			addEventListener(MouseEvent.CLICK, deleteAll);
		
			rollOut();
		}
		private function deleteAll(ev:MouseEvent) : void
		{
			removeChild(output);
			
			output = new Sprite ();
			storrage = [];
			
			rollOut();
		}
		
		
		private function rollOut():void {
			
			bmpd_output = new BitmapData(_width, _height, false, 0x000000);
			
			for (var i:int = 0; i < _width; i++ ) {
				for (var o:int = 0; o < _height; o++)
				{
					storrage.push((Math.random()) * 0xFFFFFF);	
				}
			}
			
			storrage.sort(Array.NUMERIC);
			
			for (var a:int = 0; a < _width; a++ ) {
				for (var b:int = 0; b < _height; b++)
				{
					bmpd_output.setPixel(b, a, storrage[ int(a*(bmpd_output.width)+b) ]);
				}
			}
			
			bmp_output = new Bitmap(bmpd_output);
			
			output.addChild(bmp_output);
			
			addChild(output);

		}
		
	}
	
}
__________________

LRRM | BLOG | FACEBOOK | TWITTER | G+ | INSTACANV.AS

Geändert von echo5-7 (20-05-2009 um 09:53 Uhr)
echo5-7 ist offline   Mit Zitat antworten
Alt 20-05-2009, 12:24   #8 (permalink)
thinkin aBout tha lib.
 
Benutzerbild von kaneda
 
Registriert seit: Nov 2001
Ort: Kölle
Beiträge: 1.379
Du wirst auch den HSV Farbraum nicht einfach so linear von schwarz nach weiss aufdröseln können. Gibt halt 3 dimensionen, wenn du das linear ( 1 dimensional ) bringen willst musst du eine "Logik" definieren nach der das zu geschehen hat, wenn du RGB sortiert heisst das eben: 8 bit (0-255) Blau rauf zählen, dann 1 bit Grün, dann wieder acht bit Blau, dann 1 bit Grün, usw. bis man bei 8 bit Grün angekommen ist und danach kann man das Ganze nochmal für Rot wiederholen. Für HSV hiesse das das du bei einem Winkel anfängst (Blau) da die Helligkeit hochdrehst, dann hast du halt die Sättigung den Winkel anpassen muss. Wie stellst du dir denn vor das die Farben gereiht sein sollten?
__________________
Back to community with http://leichtgewicht.at
kaneda ist offline   Mit Zitat antworten
Alt 20-05-2009, 13:45   #9 (permalink)
°
 
Benutzerbild von echo5-7
 
Registriert seit: Aug 2002
Ort: Baden-Baden
Beiträge: 4.306
hm, gute frage, soweit hab ich eigentlich noch nicht gedacht. ich wollte erstmal sehen wie das eigentlich aussieht, wenn ich die pixel neu sortiere.

aber prinzipiell dachte ich, dass dunkle farben zuerst kommen, helle farben als letztes, bis zu weiß. innerhalb eines helligkeitswertes würde ich durch die einzelnen farben auf dem kreis gehen. der startpunkt auf dem kreis müsste sich nach dem endpunkt richten, der wiederrum an die nächst hellere farbe anschließen sollte.

hmm... aber wenn man da schon bei HSV ist, müsste man ja die sättigung auch mit beachten... graue werte müssten denn in einem durchlauf des kreises am ende oder mittig platziert werden....

Jetzt wo ich grade drüber nachdenke, wird das wohl auf's Ambi-Ligth hinauslaufen. Man kann die Farben ja auch nach häufigkeit Gruppieren und prozentual der Bildfläche zuweisen. Wenn man die Position dann noch mit der Region des häufigsten Vorkommens koppel, müsste das einen Ambi-Ligth Effekt geben.
__________________

LRRM | BLOG | FACEBOOK | TWITTER | G+ | INSTACANV.AS
echo5-7 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele