Add image, Support writing PPM P3 image, Additional checks

This commit is contained in:
Manuel 2023-07-19 23:00:00 +02:00
parent 32d9ef18eb
commit 4e0801eb9b
Signed by: Manuel
GPG key ID: 4085037435E1F07A
5 changed files with 80 additions and 27 deletions

View file

@ -26,22 +26,20 @@ func (val *Validator) Calculate(x int, y int) {
val.print("h = %d² + %d² = %d + %d = %d", u, v, u*u, v*v, h)
if h < 200 {
val.print("⇒ h < 200 → %d < 200", h)
val.print("=> Continuing to section B")
val.sectionB(u, v, h)
} else if v < 0 {
val.print("⇒ h < 200 → %d ≮ 200", h)
val.print("⇒ v < 0 → %d < 0", v)
val.print("=> Continuing to section C")
val.sectionC(u, v, h)
} else {
val.print("⇒ h < 200 → %d ≮ 200", h)
val.print("⇒ v < 0 → %d ≮ 0", v)
val.print("=> Continuing to section D")
val.sectionD(x, y)
}
}
func (val *Validator) sectionB(u int, v int, h int) {
val.print("=> Continuing to section B")
val.r = 420
val.print("R = %d", val.r)
val.b = 520
@ -77,11 +75,11 @@ func (val *Validator) sectionB(u int, v int, h int) {
val.b = val.b + w
val.print(" B → B + %d ⇒ B = %d", w, val.b)
}
val.print("=> Continuing to section E")
val.sectionE()
}
func (val *Validator) sectionC(u int, v int, h int) {
val.print("=> Continuing to section C")
val.r = 150 + 2*v
val.print("R = 150 + 2 ⋅ %d = 150 + %d = %d", v, 2*v, val.r)
val.b = 50
@ -112,30 +110,38 @@ func (val *Validator) sectionC(u int, v int, h int) {
val.r = val.r + d
val.print(" R → R + %d ⇒ R = %d", d, val.r)
}
val.print("=> Continuing to section E")
val.sectionE()
}
func (val *Validator) sectionD(x int, y int) {
val.print("=> Continuing to section D")
var c int = x + 4*y
val.print("c = %d + 4 ⋅ %d", x, y)
val.r = 132 + c
val.print("R = 132 + %d = %d", c, val.r)
val.b = 192 + c
val.print("R = 192 + %d = %d", c, val.b)
val.print("=> Continuing to section E")
val.sectionE()
}
func (val *Validator) sectionE() {
val.print("=> Continuing to section E")
if val.r > 255 {
val.r = 255
val.print("⇒ R > 255 → R = %d", val.r)
}
if val.r < 0 {
val.r = 0
val.print("⇒ R < 0 → R = %d", val.r)
}
if val.b > 255 {
val.b = 255
val.print("⇒ B > 255 → B = %d", val.b)
}
if val.b < 0 {
val.b = 0
val.print("⇒ B < 0 → B = %d", val.b)
}
val.g = val.mod(7*val.r+3*val.b, 1)
val.print("G = (7 + %d + 3 ⋅ %d) | 1 = (%d + %d) | 1 = %d | 1 = %d", val.r, val.b, 7+val.r, 3*val.b, 7*val.r+3*val.b, val.g)
}