Projection Aizu - CGL_1_A(求直线交点的模板题)

Projection Aizu - CGL_1_A(求直线交点的模板题)

题意:

求点在线上的投影点

AC代码:

#include <bits/stdc++.h>
using namespace std;
int q;
struct point {
    double x, y;
};
struct line {
    double x, y;
};
double X(line A, line B) {return A.x * B.y - A.y * B.x;}
point intersection(point u1, point u2, point v1, point v2) {
    point ret = u1;
    double t = ((u1.x - v1.x) * (v1.y - v2.y) - (u1.y - v1.y) * (v1.x - v2.x)) 
                / ((u1.x - u2.x) * (v1.y - v2.y) - (u1.y - u2.y) * (v1.x - v2.x));
    ret.x += (u2.x - u1.x) * t;
    ret.y += (u2.y - u1.y) * t;
    return ret;
}
point ptoline(point p, point l1, point l2) {
    point t = p;
    t.x += l1.y - l2.y, t.y += l2.x - l1.x;
    return intersection(p, t, l1, l2);
}
int main() {
    point p0, p1, p2, p3, ans;
    line s1, s2;
    cin >> p2.x >> p2.y >> p3.x >> p3.y;
    cin >> q;
    while (q--) {
        cin >> p0.x >> p0.y;
        ans = ptoline(p0, p2, p3);
        cout << fixed << setprecision(12) << ans.x << " " << ans.y << endl;
    }
    return 0;
}
“No map projection initialized - call m_proj first!”是一个错误提示信息,通常在使用地理信息系统软件或地图相关的编程代码时会遇到。该错误的意思是在进行地图投影前未进行地图投影的初始化操作。 在地图投影中,地球的三维表面需要转换为二维平面以便进行地图绘制和分析等操作。不同的地图投影方法会通过数学模型来近似地球的形状,并将地球的曲面映射到平面上。在进行地图绘制之前,需要先配置和初始化地图投影,以确定使用哪种投影方法以及投影参数等相关信息。 若出现“No map projection initialized - call m_proj first!”的错误提示,说明在进行地图绘制或相关操作前没有先调用相应的地图投影初始化函数。可以通过在代码中添加合适的地图投影初始化函数来解决该问,例如使用m_proj函数进行地图投影的初始化。这个初始化函数会根据定义的参数来初始化地图投影。 例如,以下是一个使用Python的Basemap库示例代码,展示了如何初始化地图投影以解决该错误: ```python from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt # 创建一个地图投影对象 m = Basemap(projection='merc', resolution='l', llcrnrlat=-60, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180) # 初始化地图投影 m.proj() # 在地图上绘制一些内容 m.drawcoastlines() m.drawcountries() m.drawstates() m.fillcontinents(color='coral', lake_color='aqua') # 显示地图 plt.show() ``` 通过调用`m.proj()`函数,我们可以初始化Basemap对象的地图投影,然后可以像上面的示例代码那样在地图上绘制各种地理要素。 总之,为了解决“No map projection initialized - call m_proj first!”的错误,我们需要在进行地图绘制或相关操作之前先调用适当的地图投影初始化函数,并配置合适的投影参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值