Simplify rect properties
This commit is contained in:
parent
5aca27ddd7
commit
1d19ad7968
|
|
@ -12,8 +12,7 @@ pub fn main() {
|
||||||
};
|
};
|
||||||
let space = Rect {
|
let space = Rect {
|
||||||
scale: 3.0,
|
scale: 3.0,
|
||||||
a: vec2(- 30.0, - 300.0),
|
r: vec2(30.0, 300.0),
|
||||||
b: vec2(30.0, 300.0),
|
|
||||||
m: vec2(20.0, 50.0),
|
m: vec2(20.0, 50.0),
|
||||||
};
|
};
|
||||||
with_2d_graphics(move || {
|
with_2d_graphics(move || {
|
||||||
|
|
@ -71,8 +70,8 @@ impl Renderable for Coil {
|
||||||
impl Renderable for Rect {
|
impl Renderable for Rect {
|
||||||
fn render(&self, gc: &mut Vec<Draw>) {
|
fn render(&self, gc: &mut Vec<Draw>) {
|
||||||
gc.new_path();
|
gc.new_path();
|
||||||
gc.rect(self.a.x - self.m.x, self.a.y - self.m.y, self.b.x + self.m.x, self.b.y + self.m.y);
|
gc.rect(-self.r.x - self.m.x, -self.r.y - self.m.y, self.r.x + self.m.x, self.r.y + self.m.y);
|
||||||
gc.rect(self.a.x, self.a.y, self.b.x, self.b.y);
|
gc.rect(-self.r.x, -self.r.y, self.r.x, self.r.y);
|
||||||
gc.winding_rule(WindingRule::EvenOdd);
|
gc.winding_rule(WindingRule::EvenOdd);
|
||||||
gc.fill_color(Color::Rgba(0.8, 0.8, 0.8, 1.0));
|
gc.fill_color(Color::Rgba(0.8, 0.8, 0.8, 1.0));
|
||||||
gc.fill();
|
gc.fill();
|
||||||
|
|
@ -80,7 +79,7 @@ impl Renderable for Rect {
|
||||||
gc.stroke_color(Color::Rgba(1.0, 0.5, 0.0, 1.0));
|
gc.stroke_color(Color::Rgba(1.0, 0.5, 0.0, 1.0));
|
||||||
draw_fan(gc, self, vec2(-500.0, 0.0), vec2(1.0, 0.0), 1.0);
|
draw_fan(gc, self, vec2(-500.0, 0.0), vec2(1.0, 0.0), 1.0);
|
||||||
gc.stroke_color(Color::Rgba(0.0, 0.5, 1.0, 1.0));
|
gc.stroke_color(Color::Rgba(0.0, 0.5, 1.0, 1.0));
|
||||||
draw_fan(gc, self, vec2(0.0, 0.5 * self.a.y), vec2(1.0, 1.0), 1.0);
|
draw_fan(gc, self, vec2(0.0, -0.5 * self.r.y), vec2(1.0, 1.0), 1.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -110,15 +109,14 @@ impl Metric for Coil {
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Rect {
|
struct Rect {
|
||||||
scale: f32,
|
scale: f32,
|
||||||
a: Vec2,
|
r: Vec2,
|
||||||
b: Vec2,
|
m: Vec2,
|
||||||
m: Vec2,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Metric for Rect {
|
impl Metric for Rect {
|
||||||
fn halfmetric(&self, pos: Vec2) -> Decomp2 {
|
fn halfmetric(&self, pos: Vec2) -> Decomp2 {
|
||||||
let s = smoothbox(pos.x, vec2(self.a.x, self.b.x), self.m.x) * smoothbox(pos.y, vec2(self.a.y, self.b.y), self.m.y);
|
let s = smoothbox(pos.x, vec2(-self.r.x, self.r.x), self.m.x) * smoothbox(pos.y, vec2(-self.r.y, self.r.y), self.m.y);
|
||||||
Decomp2{
|
Decomp2{
|
||||||
ortho: Mat2::IDENTITY,
|
ortho: Mat2::IDENTITY,
|
||||||
diag: vec2(1.0, self.scale.powf(-s)),
|
diag: vec2(1.0, self.scale.powf(-s)),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user