diff options
Diffstat (limited to 'task05/Guschin/MyForm.h')
| -rw-r--r-- | task05/Guschin/MyForm.h | 26 |
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; |