summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--task05/Guschin/MyForm.h26
1 files changed, 22 insertions, 4 deletions
diff --git a/task05/Guschin/MyForm.h b/task05/Guschin/MyForm.h
index 207294e..7e76f41 100644
--- a/task05/Guschin/MyForm.h
+++ b/task05/Guschin/MyForm.h
@@ -114,21 +114,39 @@ namespace Guschin {
y = f(x);
start.y = Wcy - (y - Vc_work.y) / V_work.y * Wy;
}
-
+
+ float deltaY;
+ float red, green, blue;
while (start.x < maxX)
- {
- end.x = start.x + 1.f;
+ {
+ end.x = start.x + 1.f;
x += deltaX;
hasEnd = f_exists(x, deltaX);
if (hasEnd)
{
y = f(x);
- end.y = Wcy - (y - Vc_work.y) / V_work.y * Wy;
+ deltaY = (y - Vc_work.y) / V_work.y;
+ end.y = Wcy - deltaY * Wy;
}
vec2 tmpEnd = end;
bool visible = hasStart && hasEnd && clip(start, end, minX, minY, maxX, maxY);
if (visible) {
+ if (deltaY > 1.f) deltaY = 1.f;
+ if (deltaY < 0.f) deltaY = 0.f;
+ green = 510.f * deltaY;
+ if (deltaY < 0.5)
+ {
+ blue = 255.f - green;
+ red = 0.f;
+ }
+ else
+ {
+ blue = 0.f;
+ red = green - 255.f;
+ green = 510.f - green;
+ }
+ pen->Color = Color::FromArgb(red, green, blue);
g->DrawLine(pen, start.x, start.y, end.x, end.y);
}
start = tmpEnd;