![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 19.02.2009
Ort: Elsaß
Alter: 57
Beiträge: 13
|
Hallo miteinander,
ich suche eine Routine, mit der sich berechnen läßt, ob zwei Farben für unser Auge genug von einander abweichen, sagen wir genug "Farbkontrast" haben um deutliche Abgrenzug zu ermöglichen. Als Beispiel habe ich hier einen Democode in XProfan, der Rechtecke mit Zufallsfarben darstellt. Meist weichen diese Farben kräftig von einander ab. Manchmal sind sie aber leider sehr verwandt. Wie kann ich das im Programm-Ablauf erkennen, um z.B. die Zufallsfarbe neu berechnen zu lassen?? Code:
declare farbe&, size&
cls
randomize
size& = 210
while 1
whileloop (size&/10/2)
farbe& = @rgb(@rnd(256),@rnd(256),@rnd(256))
usebrush 1,farbe&
UsePen 5,0,farbe&
rectangle (&loop*10),(&loop*10) - (size&-(&loop*10)),(size&-(&loop*10))
endwhile
waitinput 400
cls
endwhile
Achso: Wenn ein (noch)nicht Profaner das ausprobieren will: hier der Link zum Download der Freeversion (Interpreter) XProfan 10 http://xprofan.de/download/xprofanfree.exe
__________________
Gruß Karl-Heinz Xprofan 11.1, P2CPP 2.0 BASCOM und ATMEL Fan Geändert von KHR (14.03.2009 um 08:09 Uhr) |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
So was in der Art?
Code:
declare farbe&, size&, r&, g&, b&, diff&, mix&, lastmix&
cls
randomize
size& = 210
while 1
whileloop (size&/10/2)
while 1
r&=Rnd(256)
g&=Rnd(256)
b&=Rnd(256)
mix&=(r&+g&+b&)/3
diff&=Abs(lastmix&-mix&)
Case diff&<48:CONTINUE
lastmix&=mix&
BREAK
endwhile
farbe& = @rgb(r&,g&,b&)
usebrush 1,farbe&
UsePen 5,0,farbe&
rectangle (&loop*10),(&loop*10) - (size&-(&loop*10)),(size&-(&loop*10))
endwhile
waitinput 400
cls
endwhile
Code:
Case diff&<48:CONTINUE
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (14.03.2009 um 09:50 Uhr) |
|
|
|
|
|
#3 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 19.02.2009
Ort: Elsaß
Alter: 57
Beiträge: 13
|
Hallo Frank,
danke für die fixe Antwort. Ja, das ist es was ich gesucht habe. So kann man die Kontrast wirklich feststellen und beinflussen.
__________________
Gruß Karl-Heinz Xprofan 11.1, P2CPP 2.0 BASCOM und ATMEL Fan |
|
|
|
|
|
#4 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 19.02.2009
Ort: Elsaß
Alter: 57
Beiträge: 13
|
Hallo miteinander, Hallo Frank,
hab zum ausprobieren mal in die Radler reingestrickt. Code:
' Fahrräder
' by Karl-Heinz Rattay / 2009
'
' einfach ausprobieren
'
' Wems gefällt der kann ja einen screensaver draus machen!
'
' Dieses Modul ist einfach so wie es ist. Wems nicht gefällt, der kann umstricken!!
'
declare r&, g&, b&, diff&, mix&, lastmix&
declare Zaehler&
proc zeichne
parameters c&,hpos%,vpos%, size%
usepen 0,(size%/5),c&
useBrush 0,c&
ellipse (hpos%-(Size%/1.5)),(vpos%-(Size%/1.5)) - (hpos%+(Size%/1.5)),(vpos%+(Size%/1.5))
ellipse ((hpos%+size%*2.0)-(Size%/1.5)),(vpos%-(Size%/1.5)) - ((hpos%+size%*2.0)+(Size%/1.5)),(vpos%+(Size%/1.5))
usepen 0,(size%/8),c&
moveto hpos%,vpos%
lineto (hpos%+(size%/6)),(vpos% - (Size%*1.05))
lineto (hpos%+(size%*1.7)) , (vpos% - (Size%*0.95) + (size%/6))
lineto (hpos%+(size%*1.1)) , vpos%
moveto (hpos%+(size%/4)),(vpos% - (Size%*1.3))
lineto (hpos%+(size%/6)),(vpos% - (Size%*1.3))
lineto (hpos%+(size%/6)),(vpos% - (Size%*1))
lineto (hpos%+(size%*1.1)) , vpos%
lineto (hpos%+(size%*2)) , vpos%
lineto (hpos%+(size%*1.7)) , (vpos% - (Size%*1) + (size%/6))
lineto (hpos%+(size%*1.7)) , (vpos% - (Size%*1) -(size%/7))
moveto (hpos%+(size%*1.7)-(size%/5)) , (vpos% - (Size%*1.1) -(size%/8))
lineto (hpos%+(size%*1.7)+(size%/5)) , (vpos% - (Size%*1.1) -(size%/8))
moveto (hpos%+(size%*1.1)) , (vpos%-(size%*0.3))
lineto (hpos%+(size%*1.1)) , (vpos%+(size%*0.3))
Endproc
cls
showmax
while 1
inc zaehler&
if zaehler& > 80
while 1
r& = Rnd(256)
g& = Rnd(256)
b& = Rnd(256)
mix& =(r&+g&+b&)/3
diff& = Abs(lastmix&-mix&)
Case diff&<40 : CONTINUE
lastmix& = mix&
BREAK
endwhile
zeichne @rgb(r&,g&,b&) , \
((%maxx*0.6) + @rnd(%maxx/4)) , \
(100+@rnd(@rnd(%maxy*0.85))) , \
(15+@rnd(40))
zaehler& = 1
endif
copyBmp 1,0 - %maxx,%maxy > 0,0;0
case @IsKey(27) : end ' ESC gedrückt
endwhile
Für (noch)nicht Profaner dies auprobieren wollen der Link zum Download der Freeversion (Interpreter) XProfan 10 http://xprofan.de/download/xprofanfree.exe
__________________
Gruß Karl-Heinz Xprofan 11.1, P2CPP 2.0 BASCOM und ATMEL Fan |
|
|
|
|
|
#5 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
|
Ich glaube er meint eher sowas:
Code:
proc FARBAEHNLICHKEIT ' RGB-linearer (nicht wie unsere Augen!) Gleichheitsfaktor zu Schwarz PARAMETERS FARBE1&,FARBE2& RETURN (ABS(GETRVALUE(FARBE1&)-GETRVALUE(FARBE2&))+ABS(GETGVALUE(FARBE1&)-GETGVALUE(FARBE2&))+ABS(GETBVALUE(FARBE1&)-GETBVALUE(FARBE2&))) * 0.001307189542483660130718954248 ' = 1/(255*3) endproc
__________________
Programmieren für Anfänger. Geändert von iF_ (14.03.2009 um 17:52 Uhr) Grund: Faktor erklärt. |
|
|
|
|
|
|
#6 (Direktlink) | |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Zitat:
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (14.03.2009 um 18:57 Uhr) |
|
|
|
|
|
|
#7 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 19.02.2009
Ort: Elsaß
Alter: 57
Beiträge: 13
|
Hallo miteinander,
so jetzt hab ich auch Davids Lösung in die Fahrräder reingebaut. Also ich glaube einen Unterschied zu erkennen. Ihr auch? Code:
' Fahrräder
' by Karl-Heinz Rattay / 2009
'
' einfach ausprobieren
'
' Wems gefällt der kann ja einen screensaver draus machen!
'
' Dieses Modul ist einfach so wie es ist. Wems nicht gefällt, der kann umstricken!!
'
declare r&, g&, b&, diff&, mix&, lastmix&
declare Zaehler&
proc zeichne
parameters c&,hpos%,vpos%, size%
usepen 0,(size%/5),c&
useBrush 0,c&
ellipse (hpos%-(Size%/1.5)),(vpos%-(Size%/1.5)) - (hpos%+(Size%/1.5)),(vpos%+(Size%/1.5))
ellipse ((hpos%+size%*2.0)-(Size%/1.5)),(vpos%-(Size%/1.5)) - ((hpos%+size%*2.0)+(Size%/1.5)),(vpos%+(Size%/1.5))
usepen 0,(size%/8),c&
moveto hpos%,vpos%
lineto (hpos%+(size%/6)),(vpos% - (Size%*1.05))
lineto (hpos%+(size%*1.7)) , (vpos% - (Size%*0.95) + (size%/6))
lineto (hpos%+(size%*1.1)) , vpos%
moveto (hpos%+(size%/4)),(vpos% - (Size%*1.3))
lineto (hpos%+(size%/6)),(vpos% - (Size%*1.3))
lineto (hpos%+(size%/6)),(vpos% - (Size%*1))
lineto (hpos%+(size%*1.1)) , vpos%
lineto (hpos%+(size%*2)) , vpos%
lineto (hpos%+(size%*1.7)) , (vpos% - (Size%*1) + (size%/6))
lineto (hpos%+(size%*1.7)) , (vpos% - (Size%*1) -(size%/7))
moveto (hpos%+(size%*1.7)-(size%/5)) , (vpos% - (Size%*1.1) -(size%/8))
lineto (hpos%+(size%*1.7)+(size%/5)) , (vpos% - (Size%*1.1) -(size%/8))
moveto (hpos%+(size%*1.1)) , (vpos%-(size%*0.3))
lineto (hpos%+(size%*1.1)) , (vpos%+(size%*0.3))
Endproc
proc FARBAEHNLICHKEIT
PARAMETERS FARBE1&,FARBE2&
RETURN (ABS(GETRVALUE(FARBE1&)-GETRVALUE(FARBE2&))+ABS(GETGVALUE(FARBE1&)-GETGVALUE(FARBE2&))+ABS(GETBVALUE(FARBE1&)-GETBVALUE(FARBE2&))) * 0.001307189542483660130718954248
endproc
cls
showmax
randomize
while 1
inc zaehler&
if zaehler& > 80
while 1
r&=Rnd(256)
g&=Rnd(256)
b&=Rnd(256)
mix&=@rgb(r&,g&,b&)
Case FARBAEHNLICHKEIT (lastmix&,mix&) :CONTINUE
lastmix&=mix&
BREAK
endwhile
zeichne @rgb(r&,g&,b&) , \
((%maxx*0.6) + @rnd(%maxx/4)) , \
(100+@rnd(@rnd(%maxy*0.85))) , \
(15+@rnd(40))
zaehler& = 1
endif
copyBmp 1,0 - %maxx,%maxy > 0,0;0
case @IsKey(27) : end ' ESC gedrückt
endwhile
__________________
Gruß Karl-Heinz Xprofan 11.1, P2CPP 2.0 BASCOM und ATMEL Fan |
|
|
|
|
|
#8 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Davids Lösung basiert auf einer Fliesskommazahl von 0 bis 1. Du kannst die Lösungen so nicht kombinieren.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#9 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
|
Er müsste die Zeile
Case FARBAEHNLICHKEIT (lastmix&,mix&) :continue ersetzen in Case FARBAEHNLICHKEIT(lastmix&,mix&)<0.37 :continue was dann ganz hübsch wirkt.
__________________
Programmieren für Anfänger. |
|
|
|
![]() |
|
| Lesezeichen |
| Stichworte |
| farbkonrast ermitteln |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Farbunterschied zwischen Mac und Win | Phill | Allgemein | 2 | 18.01.2008 18:48 |
| DIV-Länge berechnen | Barzi | Sonstige Programmiersprachen | 6 | 25.03.2007 17:07 |
| Datum berechnen | ELeX | PHP/MySQL | 1 | 09.10.2005 02:06 |
| Bildschirmauflösung berechnen | Anyanka | Allgemein | 12 | 28.02.2005 17:27 |
| Steuern berechnen | hunny | Allgemein | 4 | 16.12.2003 19:22 |