mixing colors l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Mixing Colors PowerPoint Presentation
Download Presentation
Mixing Colors

Loading in 2 Seconds...

play fullscreen
1 / 17

Mixing Colors - PowerPoint PPT Presentation


  • 255 Views
  • Uploaded on

Mixing Colors. Arif Zaman CS 101. A number line can be likened to a road. City A is located at mile 7 City B is at mile 34 A car travels from A to B Where is the car when it is half-way? (7+34)/2. Where is it when it is 1/4 th of the way to B? The answer is not (7+34)/4.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Mixing Colors' - medwin


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
mixing colors

Mixing Colors

Arif Zaman

CS 101

mixing operation
A number line can be likened to a road.

City A is located at mile 7

City B is at mile 34

A car travels from A to B

Where is the car when it is half-way? (7+34)/2.

Where is it when it is 1/4th of the way to B?

The answer is not (7+34)/4.

Correct answer is:7 + (1/4) (34 – 7)which can better be written as(3/4) 7 + (1/4) 34

In general when the car is proportion p of the way from A to B, its location is(1 – p) A + p B

This is a “mixture” of A and B, with proportions p and (1 – p).

Mixing Operation
we did line programs before
We did line programs before

We have written programs like:

Private Sub Form_Load()

For x = 0 To 10000 Step 1000

Line (0, x)-(10000 - x, 0)

Next x

End Sub

extend to angled lines
Extend to Angled lines
  • Two lines, AB and CD.
  • Connect A to C.
  • Connect B to D.
  • Also connect intermediate points as shown on right.
  • We can compute intermediate points using the mixing ideas.

A

D

B

C

bottom up program
Private Function Mix(a, b, p)

Mix = (1 - p) * a + p * b

End Function

Note that p must be between 0 and 1.

Note that (1-p) comes first, see first slide.

This is a FUNCTION because it computes a number as an answer.

Mix(a,b,p) is a number between a and b (if p is between 0 and 1).

When p=0 the answer is a, when p=1 the answer is b, and in between the answer is in between.

Bottom up program
web subroutine
Private Sub Web(n, _

xa, ya, xb, yb, _

xc, yc, xd, yd)

For p = 0 To n

X1 = Mix(xa, xb, p / n)

Y1 = Mix(ya, yb, p / n)

X2 = Mix(xc, xd, p / n)

Y2 = Mix(yc, yd, p / n)

Line (X1, Y1)-(X2, Y2)

Next p

End Sub

(xa,ya) and (xb,yb) are coordinates of A and B

Note that (X1,Y1) is a point between A and B that is p/n of the way toward B.

Similarly (X2,Y2) is between C and D.

These points need to be connected by a line.

There will be a total of n+1 lines drawn.

Web Subroutine
with web and mix defined
With Web and Mix defined…

Private Sub Form_Load()

Web 10, _

2000, 8000, 1000, 1000, _

6000, 4000, 3000, 8000

End Sub

  • This will draw the picture that we were trying for.
  • Note the advantage of the sub is that it is easy to draw many more if we like.
  • Similarly easy to change the number of lines drawn, so that….
100 lines is smoother
100 lines is smoother

Private Sub Form_Load()

Web 100, _

2000, 8000, 1000, 1000, _

6000, 4000, 3000, 8000

End Sub

  • Now let us continue the same idea of mixing by mixing colors as well. Start of with a red line, but end with a blue line. In the middle mix red slowly into blue.
mixing colors9
In visual basic we know about colors such as vbRed, vbBlue, but we can create our own colors.

RGB(255,255,255) is white

RGB(0,0,0) is black

RGB(255,0,0) is red

RGB(0,255,0) is green

RGB(0,0,255) is blue

RGB(100,100,100) is gray

and you can make your own mixtures as you please…

Given two colorsRGB(r1,g1,b1) andRGB(r2,g2,b2) we can make a mixture of the two, by mixing each of the colors:

RGB(Mix(r1, r2, p), _ Mix(g1, g2, p), _ Mix(b1, b2, p) )

If p=0 it will be the first color.

if p=1 it will be the 2nd color.

With values of p between 0 and 1, it will create intermediate colors

Mixing Colors
new web sub
Private Sub Web(n, _

r1, g1, b1, r2, g2, b2, _

xa, ya, xb, yb, xc, yc, xd, yd)

For p = 0 To n

X1 = Mix(xa, xb, p / n)

Y1 = Mix(ya, yb, p / n)

X2 = Mix(xc, xd, p / n)

Y2 = Mix(yc, yd, p / n)

r = Mix(r1, r2, p / n)

g = Mix(g1, g2, p / n)

b = Mix(b1, b2, p / n)

Line (X1, Y1)-(X2, Y2), _

RGB(r, g, b)

Next p

End Sub

Now the sub needs the color of the first line and the color of the last line drawn as arguments, so the form load has to be changed as well to:

Private Sub Form_Load()

Web 100, _

255, 0, 0, 0, 0, 255, _

2000, 8000, 1000, 1000, _

6000, 4000, 3000, 8000

End Sub

New Web Sub
the result of this is
The result of this is
  • Note that it is nice looking but it has 100 lines, and yet still doesn’t look “continuous” and has “Moire patterns”.
a smooth picture
A Smooth picture
  • We can cut out the “Moire patterns” and make the picture look nicer by adding lots of lines, but it is easier to simply increase the line thickness. SettingForm1.drawwidth=10is more than enough to get the following picture
making random webs
The Web subroutine is very flexible, allowing for any number of lines, and starting and ending color, and any four points.

But it is a pain to set all these, so we can randomly fill them

Private Sub Form_Load()

RandomWeb

End Sub

Private Sub RandomWeb

r1 = Rnd * 255: r2 = Rnd * 255

g1 = Rnd * 255: g2 = Rnd * 255

b1 = Rnd * 255: b2 = Rnd * 255

xa = Rnd * 10000: ya = Rnd * 10000

xb = Rnd * 10000: yb = Rnd * 10000

xc = Rnd * 10000: yc = Rnd * 10000

xd = Rnd * 10000: yd = Rnd * 10000

Web 50, _

r1, g1, b1, r2, g2, b2, _

xa, ya, xb, yb, xc, yc, xd, yd

End Sub

Making Random Webs
a random web result
A Random Web result.
  • Running the previous code results in the following figure.
many random webs
Many Random Webs
  • Simply by putting a loop in the form load, we can get many more of them

Private Sub Form_Load()

For k = 1 To 1000

RandomWeb

Next k

End Sub

timer
Timer
  • You could draw random webs with a timer delay, and do many more creative things with these webs.
  • Note that there is really just one basic idea of Mixing that we have used over and over again in all this.
  • Note how Subs and Functions make our job a lot easier, and our program a lot more readable.
a student program
A student program
  • This is a 314 line program, which could have been a lot smaller by using subs that we now have learnt.