多边形的生成

陷入EasyX的大坑,这个代码感受了一下数学之美,继续静下心来,好好利用暑假时间,好好学习。


/*      多边形  */
#include<graphics.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#define maxPointNum 360
#define screenSize 640
#define R 300
void showShape(int pointNum)
{
	int i,j,middle;
	double eachAngle,beginAngle,rgPolygon[2][maxPointNum];

	//判断是否为偶数正多边形
	eachAngle = 360/ pointNum;
	eachAngle = eachAngle * 3.141593 / 180;
	if(pointNum%2 == 0)
	{
		beginAngle = eachAngle/2;
	}
	else
	{
		beginAngle = 3.141593 / 2;
	}

	middle = screenSize / 2;

	//给每个点添加坐标
	rgPolygon[0][0] = middle + R * cos(beginAngle);
	rgPolygon[1][0] = middle - R * sin(beginAngle);
	for(i=1;i<pointNum;i++)
	{
		eachAngle = beginAngle + i * 2 * 3.141593 / pointNum;	//角度增幅
		rgPolygon[0][i] = middle + R * cos(eachAngle);
		rgP
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Shapely对一个多边形生成外包矩形,并对矩形进行投影,并将矩形划分成100米*100米的多边形,你可以使用GeoPandas、Shapely和pyproj库。下面是一个示例代码,展示了如何实现这个过程: ```python import geopandas as gpd from shapely.geometry import Polygon from shapely.ops import transform from pyproj import Transformer # 定义原始多边形 polygon = Polygon([(0, 0), (0, 10), (10, 10), (10, 0)]) # 计算多边形的外包矩形 bounding_box = polygon.bounds # 定义原始坐标系(EPSG:4326)和目标坐标系(EPSG:3857) src_crs = "EPSG:4326" dst_crs = "EPSG:3857" # 创建一个转换器,用于进行投影转换 transformer = Transformer.from_crs(src_crs, dst_crs) # 对外包矩形进行投影转换 projected_bounding_box = transform(transformer.transform, bounding_box) # 计算投影后的矩形的边界值 x_min, y_min, x_max, y_max = projected_bounding_box # 计算每个小格子的大小(100米*100米) grid_size = 100 # 创建一个空的GeoDataFrame来存储划分后的多边形 grid = gpd.GeoDataFrame() # 划分矩形成小格子 for x in range(int(x_min), int(x_max), grid_size): for y in range(int(y_min), int(y_max), grid_size): poly = Polygon([(x, y), (x+grid_size, y), (x+grid_size, y+grid_size), (x, y+grid_size)]) # 如果小格子与原始多边形相交,则将其添加到GeoDataFrame中 if poly.intersects(polygon): grid = grid.append({'geometry': poly}, ignore_index=True) # 设置GeoDataFrame的坐标系为目标坐标系 grid.crs = dst_crs # 保存划分后的多边形为Shapefile文件 grid.to_file("grid.shp") ``` 这段代码会对给定的多边形生成外包矩形,并将矩形投影到目标坐标系中。然后,它会将矩形划分成100米*100米的小格子,并将与原始多边形相交的小格子保存为一个Shapefile文件。请确保你已经安装了pyproj、geopandas和shapely库。你可以根据需要调整多边形的顶点坐标、目标坐标系和小格子的大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值