不同斜率命中的点数

本文档展示了使用C++编写的程序,通过计算不同步长下射线与网格单元的交点,实现对180度范围内特定精度的命中点检测。核心函数j_to_h用于将角度转换为坐标偏移,程序遍历网格并检查每个点是否在射线范围内。
摘要由CSDN通过智能技术生成

#不同步长命中点数

#include <asm-generic/errno.h>
#include <iostream>
#include <math.h>

using namespace std;
double j_to_h(int k,double buchang)
{
	double kk =(double)k;
	double result = tan(((buchang*kk)/180)*3.141592653);
	//cout<<result<<endl;
	return result;
}


int main()
{
	int a=5;//cloumn
	int b=5;//row
	for(int k=0;k<=180;k++)//180度/步长
	{
		if(k>=0 && k<90)
		{
			for(int x=a/2;x<a;x++)
			{
				for(int y=0;y<=b/2;y++)
				{
					double xx_c=(double)(x - a/2);
					double yy_c =(double)(b/2-y);
					if(fabs(yy_c-xx_c*(j_to_h(k,1.0)))<0.2)
					{
						cout<<"在射线k "<<k<<" y "<<y<<" x "<<x <<endl;
					}
				}

			}
			cout<<endl;
		}
		if(k>90 && k<=180)
		{
			for(int x=0;x<=a/2;x++)
			{
				for(int y=0;y<=b/2;y++)
				{
					double xx_c=(double)(x - a/2);
					double yy_c =(double)(b/2-y);
					if(fabs(yy_c-xx_c*(j_to_h(k,1.0)))<0.2)
					{
						cout<<"在射线k "<<k<<" y "<<y<<" x "<<x <<endl;
					}
				}

			}
			cout<<endl;
		}
		if(k==90) 
		{
			cout<<"90度"<<endl;
			for(int y=0;y<=b/2;y++)
			{
				cout<<"在射线k "<<k<<" y "<<y<<" x "<<a/2<<endl;
			}
			cout<<endl;
			

		}
	}


	
	return 0;
 }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yyd__

你的打赏和鼓励我会珍惜!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值