Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: krpano.com Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

jordi

Fortgeschrittener

  • »jordi« ist der Autor dieses Themas

Beiträge: 377

Wohnort: Barcelona

  • Nachricht senden

1

Freitag, 28. Juli 2017, 13:42

Random Colors

Do you need to create random colors ? I do, mostly for my testing purpose code where no images are involved because I want to keep it light.

so here you have a the code for such a function

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<action name="getColor">

	getRandomColor(0x); <!-- for layer -->
	getRandomColor(#); 	<!-- for text -->

</action>

<action name="getRandomColor" type="Javascript" devices="html5"><![CDATA[
		
	var letters = '0123456789ABCDEF';
	var color = args[1];
	for (var i = 0; i < 6; i++) {
		color += letters[Math.floor(Math.random() * 16)];
	}		
	
	krpano.set("randomColor", color);

]]></action>


I hope you enjoy it *cool*
visita3d.com advanced virtual tours
a new way to communicate

Tuur

Erleuchteter

Beiträge: 2 902

Wohnort: Netherlands

Beruf: Krpano custom coding / Virtual Tours / Photography / Musician / Recording engineer

  • Nachricht senden

2

Freitag, 28. Juli 2017, 23:21

*thumbsup*

I had a slightly different approach, but like this one more.
Thanks for sharing!
Tuur *thumbsup*
http://www.virtualtuur.com
Skype:studiotuur

jordi

Fortgeschrittener

  • »jordi« ist der Autor dieses Themas

Beiträge: 377

Wohnort: Barcelona

  • Nachricht senden

3

Montag, 31. Juli 2017, 10:46

Yes, as always there are many ways to arrive at the almost same point, here another approach even lighter even simpler

Quellcode

1
2
mul(randomColor, random,999999);
roundval(randomColor);
visita3d.com advanced virtual tours
a new way to communicate

4

Dienstag, 1. August 2017, 10:32

Yes, as always there are many ways to arrive at the almost same point, here another approach even lighter even simpler

Quellcode

1
2
mul(randomColor, random,999999);
roundval(randomColor);


why 999999?
mul(randomColor, random, 16777215);
(16777215 = 0xffffff)

jordi

Fortgeschrittener

  • »jordi« ist der Autor dieses Themas

Beiträge: 377

Wohnort: Barcelona

  • Nachricht senden

5

Dienstag, 1. August 2017, 11:03

999999 in order to get a value of 6 numbers
visita3d.com advanced virtual tours
a new way to communicate

6

Dienstag, 1. August 2017, 20:04

999999 in order to get a value of 6 numbers


a color is a value of 6 HEXadecimal numbers :)
by using 999999 you get only 6% of all the possible colors
and your colors will be mostly blue or red, but never green

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »indexofrefraction« (1. August 2017, 20:45)


panomaster

Fortgeschrittener

Beiträge: 252

Wohnort: Kobyłka, Poland

Beruf: Virtual Tours - Spherical Panoramas - Krpano developer

  • Nachricht senden

7

Mittwoch, 2. August 2017, 01:31

Indexofrefraction is right.

But 16777215 (the bigest decimal number of RGB combination) is DEC number and it should be converted to HEX after random multiplication.

Perhaps the code should look like this:

Quellcode

1
2
3
4
mul(randomColor, random, 16777215);
roundval(randomColor);
tohex(randomColor,'#',6);
<!-- or tohex(randomColor,'0x',6); -->


Anyway, I like this idea, guys and good job Jordi and Indexofrefraction ;)

More complex usage:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
getRandomColor(color, '#');
trace(get(color));

getRandomColor(color, '0x');
trace(get(color));

<action name="getRandomColor">
	mul(%1, random, 16777215);
	roundval(%1);
	tohex(%1,%2,6);
</action>

Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von »panomaster« (2. August 2017, 03:18)


8

Mittwoch, 2. August 2017, 12:44

i dont think you need to reconvert to hex...
this is only the case if you need a string with # for the color (ie. #ff1241)

where you have to give a 0x number it is also ok to give the decimal number.
so for tween() and COLORBLEND() etc using 0x0000ff, 0xff or 255 for blue is the same

if i would need a random color method i'd add 3 random values
for red, green and blue (3 times random * 0xff)
due to the "pseudo" randomization in computers
i think this would provide more even distributed results
than using 1 time random * 0xffffff

jordi

Fortgeschrittener

  • »jordi« ist der Autor dieses Themas

Beiträge: 377

Wohnort: Barcelona

  • Nachricht senden

9

Mittwoch, 2. August 2017, 13:34

The second method I suggested, was an untested way to show it was possible to make it in different and simpler ways, I think the best method out here is the first one I suggest , even it will only work in html5.
visita3d.com advanced virtual tours
a new way to communicate

10

Mittwoch, 2. August 2017, 22:12

Hi,

here another possibility:

Quellcode

1
2
3
4
<action name="getRandomColor">
  calc(%1, random * 0xFFFFFF);
  tohex(%1, %2, 6);
</action>

In the calc action it would be possible to hexadecimal values and 0xFFFFFF looks easier to understand than 16777215.
And roundval could be skipped, the tohex action automatically convert the value to an integer.
The bit distribution of one random value should be typical good enough for random colors (although I didn't make some static analysis about that ;-))-

Best regards,
Klaus