Skip to content

Commit b336c63

Browse files
author
Bernardo de Oliveira Bruning
committed
Implement mesh suport
1 parent 8bb2d7e commit b336c63

File tree

3 files changed

+8
-25
lines changed

3 files changed

+8
-25
lines changed

cmd/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ func run() {
2525
img := image.NewRGBA(image.Rect(0, 0, int(win.Bounds().W()), int(win.Bounds().H())))
2626

2727
triangles := make([]render.Triangle, 100)
28-
for i := 0; i < 1000; i++ {
29-
triangle := render.NewRandTriangle(0, 800)
28+
for i := 0; i < 3000; i++ {
29+
triangle := render.NewRandTriangle(0, 20)
3030
triangles = append(triangles, triangle)
3131
}
3232

render/mesh.go

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,30 +15,11 @@ func NewMesh(triangles []Triangle) Mesh {
1515
}
1616

1717
func (m Mesh) Draw(dst draw.Image) {
18-
zbuffer := make([][]bool, dst.Bounds().Dx())
19-
for i := range zbuffer {
20-
zbuffer[i] = make([]bool, dst.Bounds().Dy())
21-
}
22-
2318
for _, triangle := range m.triangles {
2419
r := uint8(rand.Intn(255))
2520
g := uint8(rand.Intn(255))
2621
b := uint8(rand.Intn(255))
2722
color := color.RGBA{r, g, b, 0xff}
28-
bound := triangle.Bounds()
29-
for x := bound.Min.X; x < bound.Max.X; x++ {
30-
for y := bound.Min.Y; y < bound.Max.Y; y++ {
31-
if zbuffer[x][y] {
32-
continue
33-
}
34-
35-
point := Vector{X: float64(x), Y: float64(y)}
36-
if triangle.Intersection(point) {
37-
dst.Set(x, y, color)
38-
zbuffer[x][y] = true
39-
}
40-
}
41-
}
42-
//triangle.Draw(dst, color.RGBA{R: r, G: g, B: b})
23+
triangle.Draw(dst, color)
4324
}
4425
}

render/triangle.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@ func random(min, max float64) float64 {
2525
}
2626

2727
func NewRandTriangle(min, max float64) Triangle {
28+
x := random(0, 600)
29+
y := random(0, 600)
2830
return NewTriangle(
29-
Vector{random(min, max), random(min, max), random(min, max)},
30-
Vector{random(min, max), random(min, max), random(min, max)},
31-
Vector{random(min, max), random(min, max), random(min, max)},
31+
Vector{random(min, max), random(min, max), random(min, max)}.Add(NewVector(x, y, 0)),
32+
Vector{random(min, max), random(min, max), random(min, max)}.Add(NewVector(x, y, 0)),
33+
Vector{random(min, max), random(min, max), random(min, max)}.Add(NewVector(x, y, 0)),
3234
)
3335
}
3436

0 commit comments

Comments
 (0)