结构体定义
typedef struct Point{
double x;
double y;
}Point;
typedef struct Line{
double A;
double B;
double C;
}Line;
实现代码
Line CalculateParallelLine(Line line , double d , Point p , bool upline)
{
Line temp;
double dBValue = 0;
temp.A = line.A;
temp.B = line.B;
temp.C = line.C - d * sqrt(line.A * line.A + line.B * line.B);
dBValue = temp.B;
if (temp.B < 0)
{
temp.A = -temp.A;
temp.B = -temp.B;
temp.C = -temp.C;
}
if ((temp.A * p.x + temp.B * p.y +temp.C) > 0)
{
if (!upline)
{
temp.C = line.C + sqrt(d * d * (line.A * line.A + line.B * line.B));
if (dBValue < 0)
temp.C = -temp.C;
}
}
else
{
if (upline)
{
temp.C = line.C + sqrt(d * d * (line.A * line.A + line.B * line.B));
if (dBValue < 0)
temp.C = -temp.C;
}
}
if (temp.B < 0)
{
temp.A = -temp.A;
temp.B = -temp.B;
temp.C = -temp.C;
}
return temp;
}