原题 每组数据给出一些圆(障碍物)的圆心和半径,一个点和一条线段,求站在这个点,能开到的线段的部分的左端点和右端点.没有则输出"No View" 相当于求过该点的圆的两条切线,切线外即为可见的地方. 借鉴于这个blog:http://blog.csdn.net/acm_cxlove/article/details/7896110 只要求出两条直线和竖直的夹角,然后通过向量旋转即可得到交点横坐标. #include<cstdio> #include<algorithm&…
链接 貌似这样的叫解析几何 重点如何求得过光源到圆的切线与地板的交点x坐标,可以通过角度及距离来算,如图, 根据距离和半径可以求得角度a.b.r,自然也可以求得d1,d2. 至于方向问题,在求r得时候 可以使r = asin((p.x-c.x)/d) p为源点,c为圆心 ,d为两点距离. 若在反方向,自然r为负角 ,并不影响最后的结果. 排序后,统计区间就可以了. #include <iostream> #include<cstdio> #include<cstring>…
一道解析几何么,,, 其实就是求直线与圆的切线. 看到方法有很多,比如根据角度之类的. 这里主要用到了初中的几何知识. 考虑这幅图. 首先可以根据相似三角形知道b的长度,同时圆心与点的方向也知道. 那么 圆心+b 就是  切点连线 与 点与圆心 连线的交点了. 然后根据 面积,有 l·r = (b的长度)*(中间点到切点的长度) . 就很容易得到切点了.详细看代码,poj返回vector好像会RE,就改成pair了. #include <cstdio> #include <cmath&g…
题意:给你一条直线和若干个圆,求圆与直线相交的长度占整条直线的比例 解题思路:通过定比分点的方法求出圆与直线的交占圆的比例. 第一步:(确定投影的方向是x轴还是y轴) (1)当直线的line.s(x, y), line.e(x, y)的line.s.x与line.e.x不同一时候,这条直线能够等同于起点为line.s.x, line.e.x; (2)不满足(1)时(即line.s.x==line.e.x时),当直线的line.s(x, y), line.e(x, y)的line.s.y与line…
求曲线y=lnx在区间(2,6)内的一条切线,使得该切线与直线x=2,x=6及曲线y=lnx所围成的图形的面积最小. 1.先画图. 2.设切点为(a,lna) (2<a<6) 3.切线方程y-lna=1/a (x-a) 4.积分求面积公式: 从2到6的积分,积分号下为 (lna-x/a + 1 -lnx)dx 可以求出S=关于a的表达式. 求S'(a)=0,求得a. 注:若S'(a)恒大于0,或恒小于0,那么说明其是单调的,则当x为区间端点时,可以取得最大或最小值.到底取哪个自己算 y'=ln…
PS:从其他地方看到的源码是有问题的.下面是修正后的 /// <summary> /// 计算两条直线的交点 /// </summary> /// <param name="lineFirstStar">L1的点1坐标</param> /// <param name="lineFirstEnd">L1的点2坐标</param> /// <param name="lineSecon…
伦伦刚刚在高中学习了解析几何,学会了计算两条直线的交点.这天,老师给她布置了一道作业.在平面上有 nnn 条直线,他们之间有若干交点.给定一对平板(两条平行的直线),问这有多少对直线,他们的交点在这一对平板之间(注意 (i, j) 和 (j, i) 只算一对). 输入格式 第一行三个整数 k,a,b 表示平板的两条平行直线的方程为 y=kx+a 和 y=kx+b,保证 a<b. 第二行一个整数 n. 接下来 n行每行两个整数 ki,bii​​,b​i​​ 表示第 iii 条直线的方程 y=kix…
Mirror and Light Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 814    Accepted Submission(s): 385 Problem Description The light travels in a straight line and always goes in the minimal path b…
Line.h #pragma once //Microsoft Visual Studio 2015 Enterprise //根据两点式方法求直线,并求两条直线的交点 #include"BoundaryPoint.h" #include"Coordinates.h" class Line { public: Line GetLine(BoundaryPoint sourcePoint, BoundaryPoint endPoint); Line GetLine(C…
题目链接:https://vjudge.net/problem/POJ-1269 题意:给出4个顶点,表示两条直线,求这两条直线的相交情况,重合输出LINE,平行输出NONE,相交于一点输出该点的距离. 思路: 用叉积判断直线的重合和平行,并且可以用叉积求相交直线的交点. 用叉积求直线交点的模板: double t=((a-c)^(c-d))/((a-b)^(c-d)); ans=Point(a.x+(b.x-a.x)*t,a.y+(b.y-a.y)*t) 证明见https://www.cnbl…