精华内容
下载资源
问答
  • [计算几何] (维)圆与直线的交点

    千次阅读 2018-09-26 19:10:53
    Step1: 首先求出圆心c在直线l 的投影点pr的坐标 可通过求解向量p1pr(p1pr的长度 * p1p2的单位向量) Step2: 计算向量p1p2的单位向量e, 再勾股定理求出base的长度, 进而求出向量base Step3: 最后,以pr作为起点, ...

    给出圆心O的坐标, 和半径r, 再给出点A,B的坐标构成直线AB, 求出圆与直线AB交点的坐标

     

    如下图

     Step1: 首先求出圆心c在直线l 上的投影点pr的坐标

    可通过求解向量p1pr(p1pr的长度 * p1p2的单位向量)

    Step2: 计算向量p1p2的单位向量e, 再勾股定理求出base的长度, 进而求出向量base

    Step3: 最后,以pr作为起点, 向正or负方向加上该向量, 就可以得到圆与直线的交点了

    程序代码参考

    #include<iostream>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    typedef struct node
    {
    	double x, y;
    }NODE;
    inline NODE Vector(NODE A, NODE B);  //向量AB
    double cross(NODE A, NODE B, NODE P);
    inline double dis2(NODE a, NODE b);
    double disLine(NODE A, NODE B, NODE P);
    double dot(NODE A, NODE B, NODE P);
    NODE prxy(NODE A, NODE B, NODE O);
    NODE Vbase(NODE A, NODE B, NODE O, double r);
    int main()
    {
    	NODE A, B, O;
    	double r;
    	cin >> O.x >> O.y>>r;
    	cin >> A.x >> A.y >> B.x >> B.y;
    	NODE Base = Vbase(A, B, O, r);      //向量base
    	NODE pr = prxy(A, B, O);            //点pr
    	NODE x1 = { Base.x + pr.x, Base.y + pr.y };
    	NODE x2 = { pr.x - Base.x, pr.y - Base.y };
    	if (disLine(A, B, O) > r)
    		cout << "没有交点" << endl;
    	else
    		cout << x1.x << ' ' << x1.y << ' ' << x2.x << ' ' << x2.y << endl;	
    	return 0;
    }
    NODE Vbase(NODE A,NODE B,NODE O,double r)    //求向量base
    {
    	double base = sqrt(r*r - disLine(A, B, O)*disLine(A, B, O));
    	NODE AB = Vector(A, B);
    	NODE e = { AB.x / sqrt(dis2(A, B)), AB.y / sqrt(dis2(A, B)) };
    	return{ e.x*base, e.y*base };
    }
    NODE prxy(NODE A,NODE B,NODE O)   //求点pr的坐标, 点pr是圆心O到直线AB的垂足
    {
    	NODE AO = Vector(A, O);
    	NODE AB = Vector(A, B);
    	double l = dot(A, B, O) / sqrt(dis2(A, B));
    	NODE e = { AB.x / sqrt(dis2(A, B)), AB.y / sqrt(dis2(A, B)) };
    	NODE Apr = { e.x*l, e.y*l };
    	return{ A.x + Apr.x, A.y + Apr.y };
    }
    double disLine(NODE A, NODE B, NODE P)   //点P到直线AB的距离
    {
    	return fabs(cross(A,B,P))/sqrt(dis2(A,B));
    }
    double dot(NODE A, NODE B, NODE P)    //向量AB,AP的内积
    {
    	NODE AB = Vector(A, B);
    	NODE AP = Vector(A, P);
    	return AB.x*AP.x + AB.y*AP.y;
    }
    inline double dis2(NODE a, NODE b)            //点a,b距离的平方
    {
    	return (b.x - a.x)*(b.x - a.x) + (b.y - a.y)*(b.y - a.y);
    }
    double cross(NODE A, NODE B, NODE P)   //向量AB与向量AP的外积
    {
    	NODE AB = Vector(A, B);
    	NODE AP = Vector(A, P);
    	return AB.x*AP.y - AB.y*AP.x;
    }
    inline NODE Vector(NODE A, NODE B)    //向量AB
    {
    	return{ B.x - A.x, B.y - A.y };
    }

    参考书籍: 挑战程序设计竞赛2

    展开全文
  • 判断维点线段的哪一侧

    千次阅读 2017-07-11 16:14:55
    如果 res,说明结果向量垂直于屏幕向里,也就是指向Z轴的方向,P点在直线的下侧。 如果res>0,说明结果向量垂直于屏幕向外,也就是指向Z轴的正方向,P点在直线的上侧。...如果res=0,P点在直线上

    note:用到叉乘的知识,两个向量的叉乘得到一个垂直于这两个向量的向量,如果这两个向量不共线的话。否则,得到的是0。结果向量的方向可以用右手定则判断。

    如图所示,线段AB和点P


    印象里,只学过三维向量的叉乘,将向量AB和AP扩展到三维,得到



    跟预计的是相符合的,是一个平行于Z轴的向量,即


    如果 res<0,说明结果向量垂直于屏幕向里,也就是指向Z轴的负方向,P点在直线的下侧。

    如果res>0,说明结果向量垂直于屏幕向外,也就是指向Z轴的正方向,P点在直线的上侧。

    如果res=0,P点在直线上。


    展开全文
  • python 穿点最多的直线

    2019-10-21 14:59:37
    在二维平面,有一些点,请找出经过点数最多的那条线。 给定一个点集vector<point>p和点集的大小n,没有两个点的横坐标相等的情况,请返回一个vector<double>,代表经过点数最多的那条直线的斜率和截距...

    题目描述

    在二维平面上,有一些点,请找出经过点数最多的那条线。

    给定一个点集vector<point>p和点集的大小n,没有两个点的横坐标相等的情况,请返回一个vector<double>,代表经过点数最多的那条直线的斜率和截距。</double></point>(这里的截距应该是x=0时,y的值,即纵截距,截距可正可负)

    # -*- coding:utf-8 -*-
    
    # class Point:
    #     def __init__(self, a=0, b=0):
    #         self.x = a
    #         self.y = b
    import collections
    class DenseLine:
        def getLine(self, p, n):
            result=[]
            for i in range(n-1) :
                k=(p[i+1].y-p[i].y)/(p[i+1].x-p[i].x)
                b=p[i].y-k*p[i].x#y=kx+b
                result.append((k,b))
            count=collections.Counter(result)
            return count.most_common(1)[0][0]

    关于Python collections.Counter()用法可以参考下面这篇博客:

    https://blog.csdn.net/qwe1257/article/details/83272340

    展开全文
  • 这一问题,网上有很多种解释,今天我主要从数学分析的角度来说一下我的看法。 ...z = f(x,y)限制在直线L变化时可以转换为关于t的一元函数 方向导数定义为,其中为l与梯度的夹角,由三角函数...

    这一问题,网上有很多种解释,今天我主要从数学分析的角度来说一下我的看法。

    一、什么是梯度

    根据高等数学中梯度的定义可知梯度一个向量由函数对各个变量的偏导数组成。例如二维函数梯度是\bigtriangledown f = (\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}),同理三维函数梯度为\bigtriangledown f = (\frac{\partial f}{\partial x},\frac{\partial f}{\partial y},\frac{\partial f}{\partial z})

    二、方向导数

    高数中过点M(x_{0},y_{0}),以为ll =(cos\alpha ,sin\alpha )为方向向量的直线参数方程为

    x = x_{0} + tcos\alpha

    y = y_{0} + tsin\alpha

    z = f(x,y)限制在直线L上变化时可以转换为关于t的一元函数

    \varphi (t) = f(x_{0}+tcos\alpha ,y_{0}+tsin\alpha)

    方向导数定义为\varphi ^{'}(0) = \bigtriangledown f.(cos\alpha ,sin\alpha ) =|\bigtriangledown f|cos\beta,其中\beta为l与梯度的夹角,由三角函数性质可知\beta=0,时方向导数最大。

    由以上推导可知直线l为下降的方向,当下降的方向与梯度成0度角的时候,方向导数最大,下降速度也最快。

     

    展开全文
  • 今天抽空把月份宅家学习的空间插补算法进行整理,这里要感谢CSDN中的一些大咖们,有些算法是完全借鉴,有些算法是之基础发挥综合的,这里先一并感谢!切入正题! 四元数基础 注意这里使用单位四元数来进行...
  • ()数轴1、定义:规定了原点、正方向和单位长度的直线叫做数轴。2、数轴的三要素是:原点、正方向、单位长度。(三)相反数1、定义:只有符号不同的两个数互为相反数。2、几何定义:数轴分别位于原点的两旁,到...
  • 对AdaBoost算法进行学习后,matlab平台下,实现AdaBoost算法。实验中,训练样本的产生方式是:X=rand(length,2);length是样本数。...即用多个一次函数去模拟次函数的功能,所以理论是可实现的。
  • 接着一篇文章,这个主要实现了垂直,垂直于两个线段的直线交于一点,直接看效果: 原理: 一条线段由两个点P1(x1,y1),P2(x2,y2)组成,其中的这条线段所在的直线l1的斜率可求: k0 = (y2 - y1) / (x2 - x1) ...
  •  实例081 使用正则表达式验证非零的整数 97 3.6 常用字符验证技巧 98  实例082 使用正则表达式验证大写字母 98  实例083 使用正则表达式验证小写字母 99  实例084 使用正则表达式检查字符串中重复出现的词...
  • 章是否存在很多实数它们不标准分析的实数轴上而非标准分析的实数轴上呢?从本文会得到答案。...边界点对应的数为 这个非标准分析整数常数,正边界点对应的数为 这个非标准分析整数常数,直线上...
  • 种树 题目描述 cyrcyr今天在种树,他在一条直线上挖了n个坑。这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会在相邻的两个坑中种树。...第行,n个正整数,第i个数表示在直线上从...
  • 、画数轴的步骤:一画、取、三定(1)画直线和正方向:就是先画一条直线,一般画成水平的直线,并选取正方向,一般取向右为正方向(2)取原点:通常原点选在直线中间,标数字0(3)定单位长度:选取适当的长度为单位长度并...
  • 摘要:学习机器学习时,涉及线性分类问题时,对于如何找到最佳的线性分类器,我们会使用到Perceptron Learning Algorithm(PLA),即是感知机学习算法,来平面(这里以维平面为例)的众多直线中找到一条理想的...
  • P1484 种树

    2018-07-08 12:53:41
    题目描述cyrcyr今天在种树,他在一条直线上挖了n个坑。这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会在相邻的两个坑中种树。而且由于cyrcyr的树种...第行,n个正整数,第i个数表示在直线上从...
  • 洛谷 p1484

    2018-07-07 18:48:55
    题目描述cyrcyr今天在种树,他在一条直线上挖了n个坑。这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会在相邻的两个坑中种树。而且由于cyrcyr的树种...第行,n个正整数,第i个数表示在直线上从...
  • 洛谷P1484 种树

    2018-02-11 15:10:06
    题目描述cyrcyr今天在种树,他在一条直线上挖了n个坑。这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会在相邻的两个坑中种树。而且由于cyrcyr的树种...第行,n个正整数,第i个数表示在直线上从...
  • 人工智能算法 1. 假设在二维平面中,有一直线方程AX+BY+C=0,点P坐标为(x0,y0),则相应点P到直线的距离为:点到直线的距离公式 2.假设一超平面h=wx+b,对于...我们把问题简单化一下,也就是在二维平面,找到一条直线...
  • 这里我们将它作用在直线上。 根据直线方程:y=ax+b。 从原点做直线的垂线,和x正方向形成θ夹角,原点到直线的距离为ρ。当θ小于180°时,认为它是正的,大于180°时,θ是的。这样就可以把原点到直线的距离用...
  • LDA线性判别分析

    2017-06-26 20:58:00
    LDA线性判别分析 给定训练集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能的近,异类样例点尽可能的远,对新样本进行分类的时候,将新样本同样的投影,再根据投影得到的位置...将数据投影在直线上,则两...
  • SVM 支持向量机

    2019-08-08 04:35:51
    学习策略:间隔最大化(解凸次规划的问题) 对于图,如果采用感知机,可以找到无数条...假设a是正类,b是类,那么a和b直接的距离就是ob-oa在直线l的映射。 我们假设a,b所在的那条直线的方程为: ...
  • 我们之前看到的都是线性的得分函数,这样在二是一条直线,三维是一个平面。 不具有线性性质的情况下,尽管比较小,能保证,但是一些数据会很大,这样的结果就不太理想了。  就像在上图的左图中,...
  • 9.3梯度下降方法 梯度下降方法 例子 梯度下降方法 用梯度做搜索方向,即令,这种下降方法称为梯度下降方法: 给定初始点 ... 直线搜索:通过精确或回溯直线...考虑次目标函数:,显然最优点是。f的海瑟矩...
  • 黎曼猜想简析

    2018-10-09 13:44:00
    参考这里​ 和这里​ 和这里​ 就说这个猜想跟素数的分布有关,而素数的重要性被奉为万数之基。...用维坐标系表示复平面,那么取零值的点只下面两条横纵直线上: 前一种称为平凡零点,不怎么受人关注...
  • 洛谷1484 种树

    2019-10-04 18:51:59
    cyrcyr今天种树,他一条直线上挖了n个坑。这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会相邻的两个坑中种 树。而且由于cyrcyr的树种不够,他至多会种k棵树。假设cyrcyr有某种神能力,能...
  • cyrcyr今天种树,他一条直线上挖了n个坑。这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会相邻的两个坑中种树。而且由于cyrcyr的树种不够,他至多会种k棵树。假设cyrcyr有某种神能力,能...
  • 边缘测量

    2021-02-10 10:23:25
    维边缘的定义:图像中的若干点组合成的线,这些点的方向导数垂直于边缘的方向局部最大的。或者说这些点梯度值梯度方向局部最大。 类似于一维边缘的定价定义:拉普拉斯算子过零的那些点。 但是,对于...
  • 种树 (堆模拟网络流)

    2019-10-01 04:42:32
    cyrcyr今天种树,他一条直线上挖了n个坑。这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会相邻的两个坑中种树。而且由于cyrcyr的树种不够,他至多会种k棵树。假设cyrcyr有某种神能力,能...
  • 洛谷 P1484 种树

    2019-03-27 18:00:17
    cyrcyr今天种树,他一条直线上挖了n个坑。这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会相邻的两个坑中种树。而且由于cyrcyr的树种不够,他至多会种k棵树。假设cyrcyr有某种神能力,能...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

在直线上负二在负