passage des centroids à des circumcenters

pull/35/head
Valentin Stark 3 years ago
parent f3d3190415
commit 9c020b580f
  1. 35
      utils/terrain/Terrain.gd
  2. 4
      utils/world_generation/WorldGeneration.gd

@ -244,11 +244,40 @@ class Triangle:
func center2d(): func center2d():
var points = points() var points = points()
return (points[0].point2d() + points[1].point2d() + points[2].point2d()) / 3.0 var a = points[0].point2d()
var b = points[1].point2d()
var c = points[2].point2d()
var ad = a[0] * a[0] + a[1] * a[1]
var bd = b[0] * b[0] + b[1] * b[1]
var cd = c[0] * c[0] + c[1] * c[1]
var D = 2 * (a[0] * (b[1] - c[1]) + b[0] * (c[1] - a[1]) + c[0] * (a[1] - b[1]))
return Vector2(
1 / D * (ad * (b[1] - c[1]) + bd * (c[1] - a[1]) + cd * (a[1] - b[1])),
1 / D * (ad * (c[0] - b[0]) + bd * (a[0] - c[0]) + cd * (b[0] - a[0]))
)
# return (points[0].point2d() + points[1].point2d() + points[2].point2d()) / 3.0
func center3d(): func center3d():
var points = points() var points = points()
return (points[0].point3d() + points[1].point3d() + points[2].point3d()) / 3.0 var a = points[0].point2d()
var b = points[1].point2d()
var c = points[2].point2d()
var ad = a[0] * a[0] + a[1] * a[1]
var bd = b[0] * b[0] + b[1] * b[1]
var cd = c[0] * c[0] + c[1] * c[1]
var D = 2 * (a[0] * (b[1] - c[1]) + b[0] * (c[1] - a[1]) + c[0] * (a[1] - b[1]))
return Vector3(
1 / D * (ad * (b[1] - c[1]) + bd * (c[1] - a[1]) + cd * (a[1] - b[1])),
points[0].get_elevation(),
1 / D * (ad * (c[0] - b[0]) + bd * (a[0] - c[0]) + cd * (b[0] - a[0]))
)
# var center2d = center2d()
# return Vector3(center2d.x, )
# var points = points()
# return (points[0].point3d() + points[1].point3d() + points[2].point3d()) / 3.0
func set_elevation(elevation:float): func set_elevation(elevation:float):
for point in points(): for point in points():
@ -573,7 +602,7 @@ func create(width:int, height:int, spacing:int, name:String):
func _create_points(): func _create_points():
var rect = Rect2(Vector2(0, 0), Vector2(_width, _height)) var rect = Rect2(Vector2(0, 0), Vector2(_width, _height))
var poisson_disc_sampling: PoissonDiscSampling = PoissonDiscSampling.new() var poisson_disc_sampling: PoissonDiscSampling = PoissonDiscSampling.new()
var points2d = poisson_disc_sampling.generate_points(_spacing, rect, 5) var points2d = poisson_disc_sampling.generate_points(_spacing, rect, 2)
_points.resize(points2d.size()) _points.resize(points2d.size())
for point_idx in points2d.size(): for point_idx in points2d.size():
_points[point_idx].x = points2d[point_idx].x _points[point_idx].x = points2d[point_idx].x

@ -4,11 +4,11 @@ class_name WorldGeneration
export(int) var width = 2048 export(int) var width = 2048
export(int) var height = 2048 export(int) var height = 2048
export(int) var spacing = 20 export(int) var spacing = 10
export(int, 1, 9) var octaves = 5 export(int, 1, 9) var octaves = 5
export(int, 1, 30) var wavelength = 8 export(int, 1, 30) var wavelength = 8
export(int) var border_width = 200 export(int) var border_width = 200
export(int) var terraces = 30 export(int) var terraces = 100
export(int) var terrace_height = 5 export(int) var terrace_height = 5
export(float) var mountain_height = 6.0 / 24.0 export(float) var mountain_height = 6.0 / 24.0
export(int) var river_proba = 200 export(int) var river_proba = 200

Loading…
Cancel
Save