New tests from scratch in quest of pixel perfection
This commit is contained in:
100
networks/test.py
Normal file
100
networks/test.py
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
from gdpc import Editor, Block, geometry
|
||||||
|
|
||||||
|
|
||||||
|
def cirlce(xm, ym, r):
|
||||||
|
editor = Editor(buffering=True)
|
||||||
|
x = -r
|
||||||
|
y = 0
|
||||||
|
err = 2-2*r
|
||||||
|
while (True):
|
||||||
|
editor.placeBlock((round(xm-x), 102, round(ym+y)),
|
||||||
|
Block("white_concrete"))
|
||||||
|
editor.placeBlock((round(xm-y), 102, round(ym-x)),
|
||||||
|
Block("red_concrete"))
|
||||||
|
editor.placeBlock((round(xm+x), 102, round(ym-y)),
|
||||||
|
Block("blue_concrete"))
|
||||||
|
editor.placeBlock((round(xm+y), 102, round(ym+x)),
|
||||||
|
Block("green_concrete"))
|
||||||
|
print(xm-x, ym+y)
|
||||||
|
print(xm-y, ym-x)
|
||||||
|
print(xm+x, ym-y)
|
||||||
|
print(xm+y, ym+x)
|
||||||
|
r = err
|
||||||
|
if (r <= y):
|
||||||
|
y += 1
|
||||||
|
err += y*2+1
|
||||||
|
if (r > x or err > y):
|
||||||
|
x += 1
|
||||||
|
err += x*2+1
|
||||||
|
if (x < 0):
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
print("\n")
|
||||||
|
cirlce(-1606, 758, 20)
|
||||||
|
|
||||||
|
|
||||||
|
class Point:
|
||||||
|
def __init__(self, x, y, z):
|
||||||
|
self.x = x
|
||||||
|
self.y = z
|
||||||
|
self.z = y
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f"({self.x} {self.y} {self.z})"
|
||||||
|
|
||||||
|
|
||||||
|
def drawLineOverlap(start, end, overlap):
|
||||||
|
# Direction
|
||||||
|
delta_x = end.x - start.x
|
||||||
|
delta_y = end.y - start.y
|
||||||
|
|
||||||
|
if (delta_x < 0):
|
||||||
|
delta_x = -delta_x
|
||||||
|
step_x = -1
|
||||||
|
else:
|
||||||
|
step_x = +1
|
||||||
|
|
||||||
|
if (delta_y < 0):
|
||||||
|
delta_y = -delta_y
|
||||||
|
step_y = -1
|
||||||
|
else:
|
||||||
|
step_y = +1
|
||||||
|
|
||||||
|
delta_2x = 2*delta_x
|
||||||
|
delta_2y = 2*delta_y
|
||||||
|
|
||||||
|
print(start.x, start.y)
|
||||||
|
|
||||||
|
if (delta_x > delta_y):
|
||||||
|
error = delta_2y - delta_x
|
||||||
|
while (start.x != end.x):
|
||||||
|
start.x += step_x
|
||||||
|
if (error >= 0):
|
||||||
|
if (overlap == 'LINE_OVERLAP_MAJOR'):
|
||||||
|
print(start.x, start.y)
|
||||||
|
|
||||||
|
start.y += step_y
|
||||||
|
if (overlap == 'LINE_OVERLAP_MINOR'):
|
||||||
|
print(start.x - step_x, start.y)
|
||||||
|
error -= delta_2x
|
||||||
|
error += delta_2y
|
||||||
|
print(start.x, start.y)
|
||||||
|
else:
|
||||||
|
error = delta_2x - delta_y
|
||||||
|
while (start.y != end.y):
|
||||||
|
start.y += step_y
|
||||||
|
if (error >= 0):
|
||||||
|
if (overlap == 'LINE_OVERLAP_MAJOR'):
|
||||||
|
print(start)
|
||||||
|
start.x += step_x
|
||||||
|
if (overlap == 'LINE_OVERLAP_MINOR'):
|
||||||
|
print(start.x, start.y - step.y)
|
||||||
|
error -= delta_2y
|
||||||
|
error += delta_2x
|
||||||
|
print(start.x, start.y)
|
||||||
|
|
||||||
|
|
||||||
|
drawLineOverlap(Point(-10, 0, 0,), Point(10, 0, 3), "None")
|
||||||
Reference in New Issue
Block a user