cosplay: Touhou/Houjuu Nue #4
|
@ -399,31 +399,14 @@ class WingProfile(Model):
|
||||||
return wrist_x, wrist_y
|
return wrist_x, wrist_y
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _mask_elbow(self) -> list[Tuple[float, float]]:
|
def _mask_elbow(self) -> list[Tuple[float, float]]:
|
||||||
"""
|
"""
|
||||||
Polygon shape to mask out parts above the elbow
|
Polygon shape to mask out parts above the elbow
|
||||||
"""
|
"""
|
||||||
l = 200
|
|
||||||
return [
|
|
||||||
(0, -l),
|
|
||||||
(self.elbow_x, -l),
|
|
||||||
(self.elbow_x, self.elbow_y),
|
|
||||||
(self.elbow_top_x, self.elbow_top_y),
|
|
||||||
(self.elbow_top_x, l),
|
|
||||||
(0, l)
|
|
||||||
]
|
|
||||||
|
|
||||||
def _mask_wrist(self) -> list[Tuple[float, float]]:
|
def _mask_wrist(self) -> list[Tuple[float, float]]:
|
||||||
l = 200
|
"""
|
||||||
return [
|
Polygon shape to mask wrist
|
||||||
(0, -l),
|
"""
|
||||||
(self.wrist_x, -l),
|
|
||||||
(self.wrist_x, self.wrist_y),
|
|
||||||
(self.wrist_top_x, self.wrist_top_y),
|
|
||||||
(self.wrist_top_x, l),
|
|
||||||
(0, l),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
@target(name="profile-s1", kind=TargetKind.DXF)
|
@target(name="profile-s1", kind=TargetKind.DXF)
|
||||||
|
@ -748,10 +731,10 @@ class WingR(WingProfile):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
elbow_height: float = 111.0
|
elbow_height: float = 111.0
|
||||||
elbow_x: float = 363.0
|
elbow_x: float = 285.0
|
||||||
elbow_y: float = 44.0
|
elbow_y: float = 5.0
|
||||||
# Tilt of elbow w.r.t. shoulder
|
# Tilt of elbow w.r.t. shoulder
|
||||||
elbow_angle: float = 30.0
|
elbow_angle: float = 25.0
|
||||||
|
|
||||||
wrist_height: float = 60.0
|
wrist_height: float = 60.0
|
||||||
# Bottom point of the wrist
|
# Bottom point of the wrist
|
||||||
|
@ -841,6 +824,29 @@ class WingR(WingProfile):
|
||||||
)
|
)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def _mask_elbow(self) -> list[Tuple[float, float]]:
|
||||||
|
l = 200
|
||||||
|
return [
|
||||||
|
(0, -l),
|
||||||
|
(self.elbow_x, -l),
|
||||||
|
(self.elbow_x, self.elbow_y),
|
||||||
|
(self.elbow_top_x, self.elbow_top_y),
|
||||||
|
(self.elbow_top_x, l),
|
||||||
|
(0, l)
|
||||||
|
]
|
||||||
|
|
||||||
|
def _mask_wrist(self) -> list[Tuple[float, float]]:
|
||||||
|
l = 200
|
||||||
|
return [
|
||||||
|
(0, -l),
|
||||||
|
(self.wrist_x, -l),
|
||||||
|
(self.wrist_x, self.wrist_y),
|
||||||
|
(self.wrist_top_x, self.wrist_top_y),
|
||||||
|
#(self.wrist_top_x, self.wrist_top_y),
|
||||||
|
(0, self.wrist_top_y),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
@dataclass(kw_only=True)
|
@dataclass(kw_only=True)
|
||||||
class WingL(WingProfile):
|
class WingL(WingProfile):
|
||||||
|
|
||||||
|
@ -949,3 +955,25 @@ class WingL(WingProfile):
|
||||||
for line in arrow_beziers:
|
for line in arrow_beziers:
|
||||||
result = result.bezier([self.arrow_to_abs(x, y) for x,y in line])
|
result = result.bezier([self.arrow_to_abs(x, y) for x,y in line])
|
||||||
return result.assemble()
|
return result.assemble()
|
||||||
|
|
||||||
|
def _mask_elbow(self) -> list[Tuple[float, float]]:
|
||||||
|
l = 200
|
||||||
|
return [
|
||||||
|
(0, -l),
|
||||||
|
(self.elbow_x, -l),
|
||||||
|
(self.elbow_x, self.elbow_y),
|
||||||
|
(self.elbow_top_x, self.elbow_top_y),
|
||||||
|
(self.elbow_top_x, l),
|
||||||
|
(0, l)
|
||||||
|
]
|
||||||
|
|
||||||
|
def _mask_wrist(self) -> list[Tuple[float, float]]:
|
||||||
|
l = 200
|
||||||
|
return [
|
||||||
|
(0, -l),
|
||||||
|
(self.elbow_x, self.wrist_y),
|
||||||
|
(self.wrist_x, self.wrist_y),
|
||||||
|
(self.wrist_top_x, self.wrist_top_y),
|
||||||
|
(self.elbow_x, self.elbow_top_y + 50),
|
||||||
|
(0, l),
|
||||||
|
]
|
||||||
|
|
Loading…
Reference in New Issue