【杂】计算几何

定比分点

参考资料:https://baike.baidu.com/item/定比分点公式/8700298?fr=aladdin

向量形式
在这里插入图片描述
A D ⃗ = C D ⃗ B C ⃗ A B ⃗ + B D ⃗ B C ⃗ A C ⃗ \vec{AD}=\frac{\vec{CD}}{\vec{BC}}\vec{AB}+\frac{\vec{BD}}{\vec{BC}}\vec{AC} AD =BC CD AB +BC BD AC
B D ⃗ = λ D C ⃗ \vec{BD}=\lambda\vec{DC} BD =λDC ,则: A D ⃗ = A B ⃗ + λ A C ⃗ 1 + λ \vec{AD}=\frac{\vec{AB}+\lambda\vec{AC}}{1+\lambda} AD =1+λAB +λAC

坐标形式
已知两点 A ( x 1 , y 1 ) A(x_1,y_1) A(x1,y1) B ( x 2 , y 2 ) B(x_2,y_2) B(x2,y2),在两点连线上有一点 P P P,设它的坐标为 ( x , y ) (x,y) (x,y),且 A P ⃗ : P B ⃗ = λ \vec{AP}:\vec{PB}=\lambda AP :PB =λ,则
x = x 1 + λ x 2 1 + λ x=\frac{x_1+\lambda x_2}{1+\lambda} x=1+λx1+λx2
y = y 1 + λ y 2 1 + λ y=\frac{y_1+\lambda y_2}{1+\lambda} y=1+λy1+λy2


Pick定理

参考资料:https://blog.csdn.net/linxilinxilinxi/article/details/82624098#11__822

Pick定理是指一个计算点阵中顶点在格点上的多边形面积公式该公式可以表示为:
2 S = 2 a + b − 2 2S=2a+b-2 2S=2a+b2

其中 a a a表示多边形内部的点数, b b b表示多边形边界上的点数, S S S表示多边形的面积。

struct Point{
    int x, y;
};
//多边形上的网格点个数
int Onedge(int n, Point* p){
	int ret = 0;
	for(int i = 0; i < n; ++i)
        ret += __gcd(abs(p[i].x - p[(i + 1)%n].x), abs(p[i].y - p[(i + 1)%n].y));
	return ret;
}
//多边形内的网格点个数
int Inside(int n, Point* p){
	int ret = 0;
	for (int i = 0; i < n; ++i)
		ret += p[(i + 1)%n].y*(p[i].x - p[(i + 2)%n].x);
    ret = (abs(ret) - Onedge(n, p))/2 + 1;
	return ret;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值