-
把描述直角坐标系上的一个点的类作为基类派生出描述一条直线的泪和一个描述三角形的类定义成员函数,要求两...
2020-06-06 14:25:52把描述直角坐标系上的一个点的类作为基类派生出描述一条直线的泪和一个描述三角形的类定义成员函数,要求两点间的距离和三角形的面积 题目要求把描述直角坐标系上的一个点的类作为基类派生出描述一条直线的泪和一个...把描述直角坐标系上的一个点的类作为基类派生出描述一条直线的泪和一个描述三角形的类定义成员函数,要求两点间的距离和三角形的面积
#include<iostream> #include<string> #include<cmath> using namespace std; class Point { protected: int x1, y1; public: Point(int a, int b) { x1 = a; y1 = b; } }; class Line :public Point { protected: int x2, y2; public: Line(int a, int b, int c, int d) :Point(a, b), x2(c), y2(d) {} }; class Triangle :public Line { protected: int x3, y3; double area; public: Triangle(int a, int b, int c, int d, int e, int f) :Line(a, b, c, d), x3(e), y3(f) {} void f() { double x, y, z, s; x = sqrt((double)(x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); y = sqrt((double)(x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3)); z = sqrt((double)(x3 - x1) * (x3 - x1) + (y3 - y1) * (y3 - y1)); s = (x + y + z) / 2; area = sqrt(s * (s - x) * (s - y) * (s - z)); } void print() { cout << "(" << x1 << "," << y1 << ")" << "(" << x2 << "," << y2 << ")" << "(" << x3 << "," << y3 << ")" << endl; cout << "area=" << area << endl; } }; int main() { int a[6]; for (int i = 0; i < 6; i++) cin >> a[i]; Triangle tri(a[0], a[1], a[2], a[3], a[4], a[5]); tri.f(); tri.print(); return 0; }
-
求两条轨迹间的hausdorff距离_题型 | 圆上有n个点到直线距离为d?
2020-12-06 13:19:04圆上有n个点到直线的距离为d圆 上到直线 的距离为 的点有( )个方法一:常规方法,画图分析由图象可以明显看出,圆在直线上方的部分内没有满足题意的点,在直线下方的部分内有两个满足题意的点。但是这样的方法并不...圆上有n个点到直线的距离为d
圆
上到直线
的距离为
的点有( )个
方法一:常规方法,画图分析
由图象可以明显看出,圆在直线上方的部分内没有满足题意的点,在直线下方的部分内有两个满足题意的点。
但是这样的方法并不使用于一般题型,尤其是图象并不明显的题型。那有没有什么代数方法可以做呢?
方法二:三角换元
盯着关键词--“圆上的点”,那我们可以设圆上的点为
,但是这样的话存在两个未知数,可以做下去,但是相对比较麻烦。
我们可以参考选修4-4中,参数方程的方法,设圆上的点为
,
,这样圆上的点到直线的距离可以利用公式表示为:
(舍),
,其中
在
内在两个解
方法三:(我最推荐的方法)直线的轨迹方程
盯着关键词:“到直线
的距离为
的点”,这样的点的轨迹应该是和直线
平行的两条直线吧
不难求两条直线分别为
、
圆心到
的距离
,与圆没有交点
圆心到
的距离
,与圆有两个交点
一共两个点复合题意
类似的题型:
-
python定义一个类、计算两点间距离并判断点的象限_Python编程实现点到直线距离计算...
2020-12-02 06:26:51为了讲述方便,我们设直线为x轴,用向量oq表示,对于点p,要计算p到直线oq的距离,我们可以任取直线上一点(这里取o)得到向量op,根据图中公式可以求得点到直线的垂足d到点p的向量dp(x,y),则点到...在实现TextMountain时,生成TCBP时需要计算文本区域点到四条边的距离,由于计算量大,所以最好是使用矩阵运算,提高运行效率。
基础讲解:
由于需要使用到矩阵运算,最好采用向量的方法来进行表示。
为了讲述方便,我们设直线为x轴,用向量oq表示,对于点p,要计算p到直线oq的距离,我们可以任取直线上一点(这里取o)得到向量op,根据图中公式可以求得点到直线的垂足d到点p的向量dp(x,y),则点到直线的距离为sqrt(xx+yy)
编程实现
def get_pt_line_dis(pt, line, lpt):
'''
获取点到直线的距离
:param pt: 点坐标,[n,2]
:param line: 直线向量 [m,2]
:param lpt: 直线上的一个点 [m,2]
:return: 点与直线的距离以及直线到点的垂直单位向量
'''
EPS=10-9
pt = np.tile(pt[:, np.newaxis, :], (1, line.shape[0], 1)) #[n,m,2]
line = np.tile(line[np.newaxis, ...], (pt.shape[0], 1, 1)) #[n,m,2]
lpt = np.tile(lpt[np.newaxis, ...], (pt.shape[0], 1, 1)) #[n,m,2]
array_trans = pt - lpt #[n,m,2] array_trans[i,j]表示第i个点与第j条直线某端点组成的向量,图中op
array_temp = np.sum(array_trans * line, axis=2) / (line[..., 0] ** 2 + line[..., 1] ** 2) #[n,m]
array_temp = np.tile(array_temp[..., np.newaxis], (1, 1, 2)) #[n,m,2]
array_temp = array_temp * line #[n,m,2]计算图中od
v = array_trans - array_temp #图中dp [n,m,2] v[i,j]表示第i个点与第j条直线的垂直向量
distance = np.linalg.norm(v, axis=2)
v = v / (distance[..., np.newaxis] + EPS)
return distance, v
-
Python——球面两点距离及两条直线夹角的计算
2021-02-16 09:59:52平常为了得出地理位置上两点的实际距离(譬如北京与杭州之间的实际距离),除了利用经纬度计算出两点的空间距离,还需要考虑地形因素。由于之间考虑地形造成误差较大,因此采用微分的办法来解决,简单来说就是将两点...问题描述:
平常为了得出地理位置上两点的实际距离(譬如北京与杭州之间的实际距离),除了利用经纬度计算出两点的空间距离,还需要考虑地形因素。由于之间考虑地形造成误差较大,因此采用微分的办法来解决,简单来说就是将两点细分为多点间的距离(当然这个多点是有限的)。
图中计算AB之间的距离,可以计算出中间多个点位的距离(如AC),然后计算在AB直线上的投影。在此之前,需要计算出球面上两条直线间的夹角以及两点在球面上的距离。1)球面上两条直线间的夹角
方法一:简易版,将球面弧线看成是直角坐标系下的直线,采用向量乘积。角度a = arc cos (a1a2/|a1||a2|)
方法二:将球面坐标系转为三维笛卡尔坐标系,然后利用向量乘积求角度。
这里考虑到向量的方向性及准确性,采用方法二会更好点。def latlong_to_3d(latr,lonr): """Convert a point given latitude and longitude in radians to 3-dimensional space,assuming a sphere radius of one.""" return np.array(( math.cos(latr) * math.cos(lonr),math.cos(latr) * math.sin(lonr),math.sin(latr) )) def angle_between_vectors_degrees(u,v): """Return the angle between two vectors in any dimension space,in degrees.""" return np.degrees( math.acos(np.dot(u,v) / (np.linalg.norm(u) * np.linalg.norm(v)))) # Convert the points to numpy latitude/longitude radians space a = np.radians(np.array(A)) b = np.radians(np.array(B)) c = np.radians(np.array(C)) # The points in 3D space a3 = latlong_to_3d(*a) b3 = latlong_to_3d(*b) c3 = latlong_to_3d(*c) # Vectors in 3D space a3vec = a3 - b3 c3vec = c3 - b3 # Find the angle between the vectors in 2D space angle3deg = angle_between_vectors_degrees(a3vec,c3vec)
2)两点间的距离
S=R·arc cos[cosβ1cosβ2cos(α1-α2)+sinβ1sinβ2]
具体原理见球面两点距离原理或是采用google map办法:
地球上任两点,其经度分别为A1、A2(E正,W负),纬度分别为B1、B2(N正,S负)。
令A0=(A1-A2)÷2,B0=(BI-B2)÷2
f=√sinB0×sinB0+cosB1×cosB2×sinA0×sinA0
S = 2Rf在依次计算逐个站点在直线上的投影,然后考虑两点间的高程数据,进行累加得到AB间实际距离。
附上代码如下:import pandas as pd from dbfread import DBF import os import numpy as np from math import radians, cos, sin, asin, sqrt import math def geodistance(lng1,lat1,lng2,lat2): lng1, lat1, lng2, lat2 = map(radians, [float(lng1), float(lat1), float(lng2), float(lat2)]) # 经纬度转换成弧度 dlon=lng2-lng1 dlat=lat2-lat1 a=sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 distance=2*asin(sqrt(a))*6371*1000 # 地球平均半径,6371km #distance=round(distance/1000,3) return distance def latlong_to_3d(latr,lonr): """Convert a point given latitude and longitude in radians to 3-dimensional space,assuming a sphere radius of one.""" return np.array(( math.cos(latr) * math.cos(lonr),math.cos(latr) * math.sin(lonr),math.sin(latr) )) def angle_between_vectors_degrees(u,v): """Return the angle between two vectors in any dimension space,in degrees.""" return np.degrees( math.acos(np.dot(u,v) / (np.linalg.norm(u) * np.linalg.norm(v)))) path = r'D:\20210208' filetype = '.dbf'#指定文件类型 total=[] def get_filename(path,filetype): name =[] final_name = [] for root,dirs,files in os.walk(path): for i in files: if filetype in i: name.append(i.replace(filetype,''))#生成不带‘.csv’后缀的文件名组成的列表 final_name = [item +'.dbf' for item in name]#生成‘.csv’后缀的文件名组成的列表 return final_name#输出由有‘.csv’后缀的文件名组成的列表 path_all = get_filename(path,filetype) for j in path_all: table = DBF(path + '/' + j) #, encoding='GBK') df = pd.DataFrame(iter(table)) total_distance = 0.0 total_distance_plain = 0.0 A = (df['POINT_Y'][0],df['POINT_X'][0]) B = (df['POINT_Y'][len(df)-1],df['POINT_X'][len(df)-1]) a = np.radians(np.array(A)) b = np.radians(np.array(B)) for n in range(len(df)-1): C = (df['POINT_Y'][n],df['POINT_X'][n]) D = (df['POINT_Y'][n+1],df['POINT_X'][n+1]) c = np.radians(np.array(C)) d = np.radians(np.array(D)) print(j,A,B,C,D) # The points in 3D space a3 = latlong_to_3d(*a) b3 = latlong_to_3d(*b) c3 = latlong_to_3d(*c) d3 = latlong_to_3d(*d) # Vectors in 3D space b3vec = b3 - a3 d3vec = d3 - a3 if D == B: angle3deg_a = 0 else: # Find the angle between the vectors in 2D space angle3deg_a = angle_between_vectors_degrees(b3vec,d3vec) # Vectors in 3D space a3vec = a3 - d3 c3vec = c3 - d3 if C == A: angle3deg_d = 0 else: # Find the angle between the vectors in 2D space angle3deg_d = angle_between_vectors_degrees(a3vec,c3vec) if angle3deg_d < 90: angle3deg = angle3deg_a + angle3deg_d else: angle3deg = angle3deg_a + 180 - angle3deg_d x = geodistance(df['POINT_X'][n],df['POINT_Y'][n],df['POINT_X'][n+1],df['POINT_Y'][n+1]) h = df['GRID_CODE'][n]-df['GRID_CODE'][n+1] x_t = x*cos(angle3deg) l = (x_t*x_t+h*h)**0.5 total_distance = total_distance+l#地表距离 total_distance_plain = total_distance_plain+x#弧面距离 total.append((j,total_distance)) print(total)
-
Opencv4图像分割和识别第七课(实战6)如何计算两条直线间的距离
2019-07-04 23:16:50前言 Opencv4图像分割和识别实战6的视频课程...1)通过前面所学的投影分割法来分别获得这2条直线上的离散采样点,然后将它们通过直线拟合求得各自的直线方程,如k1x+b和k2x+b2。... -
python两点坐标间距计算公式_坐标公式大集合(两点间距离公式)
2020-12-08 16:48:55坐标公式大集合(两点间距离公式)安徽省安庆市第四中学八年级(13)班王正宇著在八年级上册的数学教材中(沪科版),我们学习到了平面直角坐标系这一章,由此,我们引申出一次函数、二次函数、反比例函数等知识,故完全掌握... -
线段中点到另一直线距离最短_两点之间,线段最短?错。
2020-12-15 13:20:22一个最简单的例子:如果你是一个滑雪运动员,目标是最短时间冲线,你根本就不在乎两点间的最短路径,而是最快路径。如果你沿着最佳曲线下滑,你会获得更多的优势……顺势借力 开拓创新从起点到终点,有无数条道路,... -
派生类求两点间的距离、矩形的周长和面积
2016-04-07 19:55:36平面直角坐标系上的一点类CPoint作为基类,派生出描述一条直线的类Cline,再派生出一个矩形类CRect。 要求成员函数能求出两点间的距离、矩形的周长和面积等。 using System; using System.Collections.Generic; ... -
两条边延长角会有什么变化_认识直线、射线和角
2020-12-21 17:16:03认识两点间的距离,知道两点间所有连线中线段最短。2.进一步认识角,掌握角的表示方法,角的读法,知道角的各部分名称。理解射线和角的关系。3.渗透事物之间相互联系和变化的观点。在活动中培养学生观察、... -
hdu4617三维几何,异面直线距离
2013-08-08 21:48:00题意:给若干无限长的圆柱,知道圆柱轴心上的一个点和同平面上的另外两个...然后计算任意两条空间直线间的距离,由于只有30个圆柱,暴力嘛,用距离减去两圆柱的半径和,小于等于0则相交,大于0就不相交。空间直线的... -
比较两条曲线相似度_2-1 余弦相似度
2020-12-13 12:36:29与欧几里德距离类似,基于余弦相似度的计算方法也是把用户的喜好作为n-维坐标系中的一个点,通过连接这个点与坐标系的原点构成一条直线(向量),两个用户之间的相似度值就是两条直线(向量)间夹角的余弦值。... -
【算法记录/六边形网格】(五)直线绘制
2020-09-30 11:52:16怎样在两个正六边形格点间绘制一条直线呢?通常,我们可以使用线性插值方法来绘制直线。首先均匀地在直线上采样N+1N+1N+1个点,然后计算这些点在哪个六边形格点中。 计算两个六边形格点之间的距离,见【算法记录/... -
cad画直线长度与实际不符_CAD图片导入:如何对JPG图片进行描图
2021-01-03 12:41:24有时候我们的数据资料是图片形式的,而且标注尺寸不是很全,为了做图准确,可以把jpg图片导入CAD,用参照缩放把图片尺寸调整合适然后开始描图。...并在这两点间画一条直线并给这条直线标上尺寸3、缩放命令SC,选图片... -
UVA-10245 平面最近点对问题
2019-10-03 09:02:16题意:给定二维平面上的n个点,求任两点间的距离的最小值。 一、采用挑战上的分治法实现: 考虑将平面按某条直线x划分,则属于同一侧的点对之间会产生一个最小距离d,那么考虑跨越平面的点对中的距离要对答案产生... -
C# 点 线 面
2016-04-08 18:52:45把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类Cline,再派生出一个矩形类CRect。要求成员函数能够求出两点间的距离、矩形的周长和面积等。 using System; using System.Collections.... -
平行线拟合问题(附带 C++ 源代码)
2019-07-28 11:52:05#平行线拟合问题 这个问题来源于最近项目中的实际...这里假设我们已经获得了足够的数据点,第一条直线上的数据点形成集合{(x1,i,y1,i)}\{(x_{1,i}, y_{1,i})\}{(x1,i,y1,i)},第二条直线上的数据点形成集合 ... -
Box is Pull
2021-02-01 16:47:46Box is Pull 题意 类似于推箱子的拉箱子,每次只能拉动一个格子,只能拉直线,拉一格需要一秒。...答案也就是两点间的距离加二。 #include <bits/stdc++.h> using namespace std; void solve() { int a, -
摄像机几何学(一)
2017-05-17 09:41:28方便大家对于摄像机成像原理的理解。...1.图上任意两点的距离与相应地面点的水平距离之比为一常数,等于图比例尺。 2.图上任意一点引画的两条方向线间的夹角等于地面上对应的水平角。 像点位移: 当像 -
Codeforces 1079D Barcelonian Distance(计算几何)
2018-11-19 20:21:00题解:通过直线到达的:A、B两点都有两种方式到直线上,最多4种情况,每种情况求出A、B点到直线的距离和直线上新的两点间距离,取4种情况中最优的。 不通过直线到达:$abs(x1-x2)+abs(y1-y2)$,最后与通过直线到达.... -
矩形变弧度角_「八年级下」 数学 · 平行四边形(2)矩形
2021-01-06 00:25:58知识点二 矩形的判定 1、矩形的判定2、平行线间的距离如果两条直线互相平行,那么其中一条直线上任意两点到另一条直线的距离相等,这个距离称为平行线间的距离. 两条平行线之间的距离处处相等.注意:(1)运用概... -
杭电2073
2019-07-21 06:54:531)如果两个点在一条直线上,那么两点间的坐标满足(x1+y1)==(x2+y2),这时两点间的距离是s=s1*fabs(x1-x2);2)如果两点不在一条直线上,并且两点在斜率为(-1)的直线上的距离为: { for(i=(x1+y1);i<(x2... -
余弦相似度 —— Cosine Similarity
2016-06-17 16:29:03与欧几里德距离类似,基于余弦相似度的计算方法也是把用户的喜好作为n-维坐标系中的一个点,通过连接这个点与坐标系的原点构成一条直线(向量),两个用户之间的相似度值就是两条直线(向量)间夹角的余弦值。... -
余弦相似度(Cosine Similarity)
2019-11-18 15:17:28与欧几里德距离类似,基于余弦相似度的计算方法也是把用户的喜好作为n-维坐标系中的一个点,通过连接这个点与坐标系的原点构成一条直线(向量),两个用户之间的相似度值就是两条直线(向量)间夹角的余弦值。... -
斯坦福《机器学习》Lesson7感想———1、最优间隔分类器
2015-07-24 18:33:14从上一课可知,对于给定的线性可分的数据集,离分隔超平面最近的点是支持向量。... 选取一个函数里的两个点,连接两个点成一条直线,两点间的函数点都在这条直线下即为凸函数,凸函数的例子有指数函数。 -
CCPC-Wannafly Winter Camp Day1 (Div2 ABCFJ) 待补...
2019-02-03 16:02:00存在m个特殊站点,只有在特殊站点才能到另一条直线上的对应编号站点,耗时K,且只有在特殊站点才能掉头,否则只能沿同一方向走。另外1号和n号站点为特殊站点。问从A直线上的s站点开始,经过r个给定的站点并回到原处...
-
rabbitmq-aws:RabbitMQ子项目使用的AWS客户端库。 最初是Gavin Roy的httpc-aws的一个分支-源码
-
反射介绍及使用
-
PCI_Express_Base_3.0&4.0.zip
-
高阶泛函差分方程正周期解的存在性
-
照片画廊汽车-源码
-
MySQL 存储过程(创建海量数据实验环境)
-
Volatile 介绍
-
MySQL 多实例安装 及配置主从复制实验环境
-
MySQL 视图
-
判断二叉树是否为有序二叉树
-
Amoeba 实现 MySQL 高可用、负载均衡和读写分离
-
leetcode 53. 最大子序和
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
华为1+X认证——网络系统建设与运维(初级)
-
Install OpenCV4 from source on Windows – C++ / Python
-
一类拟线性系统的Lyapunov不等式(英文)
-
具有时变时滞的离散时间BAM神经网络状态估计器的新方法
-
lucactusss.github.io-源码
-
MBD1-源码
-
MySQL 高可用(DRBD + heartbeat)