1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
float CLine::GetY(int x)
{
int dx1, dx2, dy1;
if (x > max(A.x, B.x)){
x = max(A.x, B.x);
}
if (x < min(A.x, B.x)){
x = min(A.x, B.x);
}
dx1 = x - A.x;
dx2 = B.x - A.x;
dy1 = B.y - A.y;
float y;
// случай с прямой, параллельной оси y
if (dx2 == 0){
return max(B.y, A.y);
}
y = ((dx1 * dy1)/dx2) + A.y;
return y;
}