Geometry
uva1473 这题说的是 在空间中给了n个点 然后用体积最小的圆锥将这些点包含在内可以在表面上, 将这些点 映射到xoz平面上然后,然后枚举每个上凸包的边和每个点的极值进行判断求得最小的体积 我们会发现最小的体积 要不就紧贴一个点要不然就会贴住两个点
#include <iostream>
#include <cstdio>
#include <string.h>
#include <cmath>
#include <algorithm>
using namespace std;
const double INF =1.79769e+308;
const double eps = 0.000000000001;
int dcmp(double a)
{
if(fabs(a)<=eps) return ;
return a>?:-;
}
struct point {
double x,y;
point(double a=, double b=){
x=a; y=b;
}
point operator -(point A){
return point(x-A.x, y-A.y);
}
bool operator <(point A)const{
return dcmp(x-A.x)<||(dcmp(x-A.x)==&&dcmp(y-A.y)<=);
}
}P[],ch[];
int n;
double Cross(point A, point B)
{
return A.x*B.y-A.y*B.x;
}
int Conxtull(int &G)
{
sort(P,P+n);
int m=;
for(int i =; i<n ; ++i )
{
while(m>&&dcmp( Cross( ( ch[m-] - ch[m-] ), ( P[i] - ch[m-] ) ) )<=)m--;
ch[ m++ ] = P[i];
}
int k = m;
for(int i = n-; i>=; --i )
{
while( k<m&&dcmp( Cross( ch[m-]-ch[m-], P[i]-ch[m-] ) )<= ) m--;
ch[m++] = P[i] ;
}
if(n>)m--;
G=m;
return k-;
}
point getpoint(double k,point F)
{
point ans;
ans.x = F.x+(F.y/k);
ans.y = F.y+k*F.x;
return ans;
}
double Volun(double radio, double hight)
{
return acos(-)*radio*radio*hight/3.0;
}
double Volume,ansR,ansH;
void solve(double k,point T)
{
point e = getpoint(k,T);
double V =Volun(e.x,e.y);
if(dcmp(Volume-V)>){
ansR=e.x; ansH=e.y;
Volume=V;
}
}
int main()
{
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
while(scanf("%d",&n)==)
{
n++;
double Minx=0.0;
P[]=point(,);
for(int i = ; i<n; ++i)
{
double x,y,z;
scanf("%lf%lf%lf",&x,&y,&z);
P[i].x=sqrt(x*x+y*y);
P[i].y=z;
Minx = max(Minx,P[i].x);
}
int m;
int k =Conxtull(m);
ch[m]=ch[];
Volume=INF;
double K=INF;
int we;
for(int i=k; i<m; ++i )
{
if(i==m-||dcmp(ch[i].x-ch[i+].x)<=||dcmp(ch[i].y-ch[i+].y)>=)
{
we=i;
break;
}
double R =(ch[i+].y-ch[i].y)/(ch[i].x-ch[i+].x);
double t =ch[i].y*;
t/=ch[i].x;
int f1 =dcmp(t-R);
int f2=dcmp(t-K);
if(f1>=&&f2<=)
solve(t,ch[i]);
solve(R,ch[i]);
K=R;
}
double t = 2.0*ch[we].y/ch[we].x;
if(dcmp(t-K)<)
solve(t,ch[we]);
printf("%.3lf %.3lf\n",ansH,ansR);
} return ;
}
uva 12165 这题说的是 用梅涅劳斯 计算图中三角形的对应的比例列出一堆后 开始拆分那些边然后化简就会达到所要的公式
#include <iostream>
#include <string.h>
#include <cmath>
#include <cstdio>
using namespace std;
struct point{
double x,y;
point(double a=,double b=){
x=a; y =b;
}
point operator +(point A){
return point(x+A.x,y+A.y);
}
point operator -(point A){
return point(x-A.x,y-A.y);
}
point operator *(double A){
return point(x*A,y*A);
}
};
double Cross(point A,point B){
return A.x*B.y-A.y*B.x;
}
double Dot(point A,point B){
return A.x*B.x+A.y*B.y;
}
double Length(point A){
return sqrt(Dot(A,A));
}
int main()
{ double m1,m2,m3,m4,m5,m6;
point P,Q,R;
int cas;
scanf("%d",&cas);
for(int cc=; cc<=cas; ++cc){ scanf("%lf%lf%lf%lf%lf%lf",&P.x,&P.y,&Q.x,&Q.y,&R.x,&R.y);
scanf("%lf%lf%lf%lf%lf%lf",&m1,&m2,&m3,&m4,&m5,&m6);
double c =Length(P-Q),a =Length(R-Q), b =Length(P-R);
double m = m3*m5/(m6*(m3+m4));
double n = m4*m2/((m3+m4)*m1);
double BP = (c+m*c)/(n-m);
m = (m5*m1)/((m5+m6)*m2);
n = m6*m4/((m5+m6)*m3);
double CQ = (m*a+a)/(n-m);
m = m1*m3/((m1+m2)*m4);
n =m2*m6/((m1+m2)*m5);
double AR = (m*b+b)/(n-m);
point PR = (R-P)*(/Length(R-P));
point A = R +(PR*AR);
point QP = (P-Q)*(/Length(P-Q));
point B = P+(QP*BP);
point RQ = (Q-R)*(/Length(Q-R));
point C = Q+(RQ*CQ);
printf("%.8lf %.8lf %.8lf %.8lf %.8lf %.8lf\n",A.x,A.y,B.x,B.y,C.x,C.y);
} return ;
}
的
Geometry的更多相关文章
- CSharpGL(14)用geometry shader渲染模型的法线(normal)
+BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(14)用geometry shader渲染模型的法线(normal) +BIT祝威+悄悄在此留下版了个权的信息说: 2016-08-13 ...
- the operation was attempted on an empty geometry Arcgis Project异常
处理gis数据,投影变换时出现异常: the operation was attempted on an empty geometry 解决思路: arcgis的repair geometry方法:删 ...
- Topology and Geometry in OpenCascade-Adapters
Topology and Geometry in OpenCascade-Adapters eryar@163.com 摘要Abstract:本文简要介绍了适配器模式(adapter pattern) ...
- HDU1086You can Solve a Geometry Problem too(判断线段相交)
You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- <<Differential Geometry of Curves and Surfaces>>笔记
<Differential Geometry of Curves and Surfaces> by Manfredo P. do Carmo real line Rinterval I== ...
- Geometry shader总结
什么是Geometry Shader GS存在于vertext shader和固定功能vertex post-processing stage之间,它是可选的不是必要的.GS的输入是单个primiti ...
- Geometry Stage in Rendering pipeline (读书笔记2 --- Real-Time rendering)
Geometry Stage一般包含下面几个阶段 1. Model & View Transform(模型和视图变换) --- 模型空间--> 世界空间 模型变换:每个模型经过模型变换来 ...
- WPF的二维绘图(二)——几何图形Geometry
在WPF的DrawingContext对象中,提供了基本的绘制椭圆和矩形的API:DrawEllipse和DrawRectangle.但是,这些是远远不够用的,我们在日常应用中,更多的是使用DrawG ...
- Geometry关系高级操作
一些高级的操作 几何形状Geometry缓冲(buffer) 线段的融合(linemerge)是将Geometry A中相互连接的线段进行连接 多边形化操作(polygonize)对Geometry ...
- java程序操作Geometry对象
Geometry 空间地理对象,Oracle中存储Geometry对象的字段类型是 MDSYS.SDO_GEOMETRY,在数据库中构建Geometry对象的方法: v_pointarray MDSY ...
随机推荐
- Artech的MVC4框架学习——第六章Model的验证
第一Model验证旨在为通过Model绑定生成参数进行检验以确保用户输入数据的有效性(p318) 第二Model验证分两种:服务器端(三种解决方案 p256)和客户端(ajax\jQuery) 第三服 ...
- 删除个别主机的Know_hosts文件信息
方法一: rm -rf ~/.ssh/known_hosts 缺点:把其他正确的公钥信息也删除,下次链接要全部重新经过认证 方法二: vi ~/.ssh/known_hosts 删除对应ip的相关rs ...
- python pytest测试框架介绍二
在介绍一中简单介绍了pytest的安装和简单使用,接下来我们就要实际了解pytest了 一.pytest的用例发现规则 pytest可以在不同的函数.包中发现用例,发现的规则如下 文件名以test_开 ...
- 优秀的第二外语学习网站:Lang-8
想要找native speaker帮你提高自己的写作能力么? 目前了解到的这方面最好的网站:http://lang-8.com 在这个网站上,你可以随便写一些句子或文章,然后就会有native spe ...
- 自定义tarBar
使用tarBar大多数情况在我们都是默认的tarBarButton尺寸和位置但是如果我们想,希望像新浪微博那样的tarBar,就需要自定义了. 1.本质上其实就是通过我们的主控制器中以KVC的方式重新 ...
- 8.30前端jQuery和数据结构知识
2018-8-30 16:37:17 单链表的demo 从俺弟家回来了! 发现,还是要努力学习是很重要的!!努力学习新的感兴趣的东西!! 多读书还是很重要的!!! 越努力,越幸运! # coding: ...
- 8.22js前端!
2018-8-22 19:15:19 前端还有一部分就学完了预计这一星期赶一下就可以结束 然后愉快地进行Django框架!!!! 今天中午和呆呆一块吃的大盘鸡,下午和老表我们三个去了日月湖狼了一下午! ...
- poj3252Round Numbers【组合数】【数位dp】
Round Numbers The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, ...
- 2018/03/14 每日一个Linux命令 之 ln
ln 链接命令 -- 类似Windows的快捷方式,实际等于建立了一个文件同步的链接,我想,MAC上面复制一个文件到另一个路径,特别快,它可能就是建立了一个链接. -- 在通俗点讲,就是你创建链接之后 ...
- count(*) count(1) count(column)区别
count(*) 和count(1)的效果是一样的.在某些情况下效率不一样.也会统计包含null的记录. count(column)会返回当前字段不为null的记录数.