예제 #1
0
void EscapingPlanner::SelMidPoint()
{
    int lObsNum = lObsPoses.size();
    int rObsNum = rObsPoses.size();

    int pairObsNum = min(lObsNum, rObsNum);

    for (int i = 0; i < pairObsNum; i++)
    {
        Point2D tempMidpoint;
        GetMidPoint(lObsPoses[i], rObsPoses[i], tempMidpoint);
        midPoints.push_back(tempMidpoint);
        midPoints.push_back(tempMidpoint);
    }

    for (int i = 0; i < pairObsNum - 1; i++)
    {
        Point2D point1, point2;
        GetMidPoint(lObsPoses[i + 1], rObsPoses[i], point1);
        GetMidPoint(lObsPoses[i], rObsPoses[i + 1], point2);
        double dist1 = sqrt(pow((point1.x - midPoints[i * 2].x), 2) + pow((point1.y - midPoints[i * 2].y), 2))
                + sqrt(pow((point1.x - midPoints[(i + 1) * 2].x), 2) + pow((point1.y - midPoints[(i + 1) * 2].y), 2));
        double dist2 = sqrt(pow((point2.x - midPoints[i * 2].x), 2) + pow((point2.y - midPoints[i * 2].y), 2))
                + sqrt(pow((point2.x - midPoints[(i + 1) * 2].x), 2) + pow((point2.y - midPoints[(i + 1) * 2].y), 2));
        if (dist1 >= dist2)
        {
            midPoints[i * 2 + 1] = point2;
        }
        else
        {
            midPoints[i * 2 + 1] = point1;
        }
    }

    if (lObsNum - rObsNum != 0)
    {
        Point2D tempPoint;
        GetMidPoint(lObsPoses[lObsNum - 1], rObsPoses[rObsNum - 1], tempPoint);
        midPoints[2 * pairObsNum - 1] = tempPoint;
    }
    else
    {
        midPoints.pop_back();
    }
    //for (unsigned int i = 0; i < midPoints.size(); i++)
    //{
    //	cout << midPoints[i].x << " " << midPoints[i].y << endl;
    //}
}
예제 #2
0
void NervDialog::OnPaint(NervGdiDeviceContext& in_dc){
	in_dc.Rect(0, 0, size.x, size.y, 0x00303030);
	auto text_mid_pt = GetMidPoint();
	auto old_ta = SetTextAlign(in_dc(), TA_CENTER);
	auto old_opacity = SetBkMode(in_dc(), TRANSPARENT);
	in_dc.WriteText(text_mid_pt.x, text_mid_pt.y, 0, message.c_str(), message.size());

	text_mid_pt = button.GetMidPoint();
	in_dc.Rect(button, 0x00505050);
	in_dc.WriteText(text_mid_pt.x, text_mid_pt.y, 0, "OK", 3);
	
	SetTextAlign(in_dc(), old_ta);
	SetBkMode(in_dc(), old_opacity);
}