精华内容
下载资源
问答
  • 我还以为这是个五维半平面交呢……结果没看数据范围…… 题解 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i) #define fd(i,a,b) for(R int i=a,...

    传送门

    我还以为这是个五维半平面交呢……结果没看数据范围……

    题解

    //minamoto
    #include<bits/stdc++.h>
    #define R register
    #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i)
    #define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i)
    #define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
    using namespace std;
    const int N=7;
    int l[N],r[N],a[N][N],vis[N],x[N],to[N],f[(1<<5)+5];
    int n,tot,ans,lim,sum,res;
    void solve(){
        fp(i,1,n)fp(j,1,n){
            if(x[i]-x[j]-a[i][j]<0)return;
            if(x[i]-x[j]-a[i][j]>0)continue;
            if(l[i]==r[i]&&l[j]!=r[j])return;
        }
        memset(f,0,sizeof(f));
        memset(to,0,sizeof(to));
        fp(i,1,n)if(!vis[i]){
            fp(j,1,n)if(!vis[j]&&i!=j){
                if(x[i]-x[j]-a[i][j]==0)to[j-1]|=(1<<(i-1));
            }
        }
        f[0]=1;
        fp(i,1,(1<<n)-1)fp(j,0,n-1)if((i>>j&1)&&(i&to[j])==to[j])f[i]+=f[i^(1<<j)];
        ans+=f[lim];
    }
    void dfs(int pos){
        if(pos==n+1)return solve();
        if(vis[pos])dfs(pos+1);
        else{
            fp(i,l[pos],r[pos]-1)x[pos]=i,dfs(pos+1);
        }
    }
    int main(){
    //  freopen("testdata.in","r",stdin);
        scanf("%d",&n);
        fp(i,1,n){
            scanf("%d%d",&l[i],&r[i]);
            if(l[i]==r[i])vis[i]=1,x[i]=l[i];
        }
        fp(i,1,n)fp(j,1,n)scanf("%d",&a[i][j]);
        fp(i,1,n)if(a[i][i]>0)return puts("0"),0;
        fp(i,1,n)if(!vis[i])lim|=(1<<(i-1));
        dfs(1);
        sum=1;
        fp(i,1,n)if(l[i]!=r[i])sum*=r[i]-l[i],++res,sum*=res;
        printf("%.10lf\n",1.0*ans/sum);
        return 0;
    }

    转载于:https://www.cnblogs.com/bztMinamoto/p/10248740.html

    展开全文
  • 维几何体ThreeJS可以创建三种二维几何体,包括CircleGeometry(圆形),PlaneGeometry(矩形),ShapeGeometry(自定义形状)。创建二维几何体和创建三维几何体差不多,同样由形状和材质两个参数,拥有的属性也和三维几何...

    二维几何体

    ThreeJS可以创建三种二维几何体,包括CircleGeometry(圆形),PlaneGeometry(矩形),ShapeGeometry(自定义形状)。

    创建二维几何体和创建三维几何体差不多,同样由形状和材质两个参数,拥有的属性也和三维几何体一样。

    new THREE.Mesh(new THREE.PlaneGeometry(width, height, 1, 1 ),new THREE.MeshBasicMaterial(MaterialParam ));

    需要注意的是,由于贴图的尺寸必须是(2的幂数)X (2的幂数),如:1024*512,所以为了防止贴图变形,平面的宽度比例需要与贴图的比例一致。

    代码示例如下:

    function createPlane(options){

    // options={

    // width:0,

    // height:0,

    // pic:"",

    // transparent:true,

    // opacity:1

    // blending:false

    // }

    if(typeof options.pic=="string"){//传入的材质是图片路径,使用 textureloader加载图片作为材质

    var loader = new THREE.TextureLoader();

    loader.setCrossOrigin( this.crossOrigin );

    var texture = loader.load( options.pic, function() {}, undefined, function(){});

    }else{传入的材质是canvas

    var texture= new THREE.CanvasTexture( options.pic )

    }

    var MaterParam={//材质的参数

    map:texture,

    overdraw: true,

    side: THREE.FrontSide,

    // blending: THREE.AdditiveBlending,

    transparent: options.transparent,

    //needsUpdate:true,

    //premultipliedAlpha: true,

    opacity:options.opacity

    }

    if(options.blending){

    MaterParam.blending=THREE.AdditiveBlending//使用饱和度叠加渲染

    }

    var plane = new THREE.Mesh(

    new THREE.PlaneGeometry( options.width, options.height, 1, 1 ),

    new THREE.MeshBasicMaterial(MaterParam )

    );

    return plane;

    }

    在3维空间中还原平面元素在设计稿上的大小和位置

    设计稿如下图,要求三维空间中,A元素和背景处于不同的深度,A元素位于背景前方

    那么在三维空间中,与相机所在位置的相对空间位置如下图所示,

    A在该平面元素在三维空间中的位置如上图所示,面B为A平面最终渲染在屏幕上的区域,此区域应该与设计稿上的A的大小一致,那必然就有一个问题,在三维空间中,A元素的大小和坐标要如何设置,才能使A在屏幕上的投影B能与设计稿上的一致?

    这里我们需要做一些计算,计算中会用到以下已知数值:

    fov:创建相机时设置的垂直方向的夹角,

    W:canvas的width,这里以1920为示例

    H:canvas的height,这里以1080为示例

    D:相机与屏幕所在平面的距离,

    d:相机与元素A的距离,

    aw: 元素A在设计稿上的宽度

    ah: 元素A在设计稿上的高度

    ax: 元素A中点心在设计稿上的中心点X轴上的偏移值

    ay: 元素A中点心在设计稿上的中心点Y轴上的偏移值

    其中D可以视为在屏幕上投影面积为1920(W)*1080(H)的平面元素离相机的距离

    计算公式为:D=H/(2*Math.tan(fov/2));

    平面A在三维空间中尺寸与投影大小(即设计稿上的尺寸)的缩放倍数为

    zoom=d/D=d*2*Math.tan(fov/2)/H

    由此可得出平面元素A在三维空间中的大小设置为

    w=aw*d*2*Math.tan(fov/2)/H;

    h=ah*d*2*Math.tan(fov/2)/H;

    位置坐标为

    x=ax*d*2*Math.tan(fov/2)/H;

    y=ay*d*2*Math.tan(fov/2)/H;

    以下创建多个平面的代码示例:

    var fov=45;

    var camera = new THREE.PerspectiveCamera( fov, window.innerWidth / window.innerHeight, 1, 300000 );

    camera.position.set(0, 0, 1500);

    var planes=[

    ["ship1","../resource/part1/ship1.png",1024,1024,700,-400,0,1],//name,pic,w,h,x,y,z,透明度

    ["plan1","../resource/part1/plan_1.png",1024,256,-170,50,-2000,1],

    ["air","../resource/part1/airplane_1.png",512,512,150,100,-3000,1],

    ["star1","../resource/part1/star_1.png",2317,979,150,0,-4500,1],

    ["star2","../resource/part1/star_2.png",256,128,500,-100,-6000,1],

    ["light","../resource/part1/light.png",1152,1024,200,50,-7500,1],

    ["part1_bg","../resource/part1/part1_bg.jpg",2048*1.5,1024*1.5,0,0,-18000,1]

    ]

    planes.forEach(function(planeSet){

    var scale=(camera.position.z-planeSet[6])*2*Math.tan(fov/2*Math.PI/180)/1080;//此处的1080为设计稿的高度

    var plane=createPlane({

    width:parseInt(planeSet[2]*scale),

    height:parseInt(planeSet[3]*scale),

    pic:planeSet[1],

    transparent:true,

    opacity:1//planeSet[7]

    })

    plane.position.set(parseInt(planeSet[4]*scale),parseInt(planeSet[5]*scale),planeSet[6]);

    plane.name=planeSet[0];

    scene.add(plane);

    })

    穿梭动画

    穿梭动画是通过修改camera.position.z坐标来实现的。

    需要说明的是,要改变position.z的时候还要注意camera.lookAt的坐标点,若camera.position.z超过了lookAt.z,画面会以180度翻转过来,所以要保持在一个纵向深度可穿越的话,需要将camera.lookAt的z坐标设置比所有可见元素的Z坐标还要大一点。

    同时,还要注意camera的最大可视深度。

    window.addEventListener( 'mousewheel', onMouseWheel, false );

    function onMouseWheel(event){

    if(event.wheelDelta>0){

    new TWEEN.Tween( camera.position )

    .to( {z:camera.position.z+2500}, 500 )

    .start();

    }

    if(event.wheelDelta<0){

    new TWEEN.Tween( camera.position )

    .to( {z:camera.position.z-2500}, 500 )

    .start();

    }

    }

    function render() {

    camera.position.x += ( mouseX - camera.position.x ) ;

    camera.position.y += ( mouseY - camera.position.y ) ;

    camera.lookAt( new THREE.Vector3(0,0,-20000) );//此处-20000要设置得比最远的平面元素更大一些。

    renderer.render( scene, camera );

    }

    本章DEMO

    var container, stats;

    var camera, scene, renderer;

    var mouseX = 0, mouseY = 0;

    var windowHalfX = window.innerWidth / 2;

    var windowHalfY = window.innerHeight / 2;

    var planes=[

    ["ship1","../resource/part1/ship1.png",1024,1024,700,-400,0,1],//name,pic,w,h,x,y,z,透明度

    ["plan1","../resource/part1/plan_1.png",1024,256,-170,50,-2000,1],

    ["air","../resource/part1/airplane_1.png",512,512,150,100,-3000,1],

    ["star1","../resource/part1/star_1.png",2317,979,150,0,-4500,1],

    ["star2","../resource/part1/star_2.png",256,128,500,-100,-6000,1],

    ["light","../resource/part1/light.png",1152,1024,200,50,-7500,1],

    ["part1_bg","../resource/part1/part1_bg.jpg",2048*1.5,1024*1.5,0,0,-18000,1]

    ]

    init();

    animate();

    var mesh;

    function createPlane(options){

    // options={

    // width:0,

    // height:0,

    // pic:"",

    // transparent:true,

    // opacity:1

    // blending:false

    // }

    if(typeof options.pic=="string"){

    var loader = new THREE.TextureLoader();

    loader.setCrossOrigin( this.crossOrigin );

    var texture = loader.load( options.pic, function() {}, undefined, function(){});

    }else{

    var texture= new THREE.CanvasTexture( options.pic )

    }

    var MaterParam={

    map:texture,

    overdraw: true,

    side: THREE.FrontSide,

    // blending: THREE.AdditiveBlending,

    transparent: options.transparent,

    //needsUpdate:true,

    //premultipliedAlpha: true,

    opacity:options.opacity

    }

    if(options.blending){

    MaterParam.blending=THREE.AdditiveBlending

    }

    var plane = new THREE.Mesh(

    new THREE.PlaneGeometry( options.width, options.height, 1, 1 ),

    new THREE.MeshBasicMaterial(MaterParam )

    );

    return plane;

    }

    function addPlanes(){

    planes.forEach(function(planeSet){

    var scale=(1500-planeSet[6])*2*Math.tan(22.5*Math.PI/180)/1080;

    var plane=createPlane({

    width:parseInt(planeSet[2]*scale),

    height:parseInt(planeSet[3]*scale),

    pic:planeSet[1],

    transparent:true,

    opacity:1//planeSet[7]

    })

    plane.position.set(parseInt(planeSet[4]*scale),parseInt(planeSet[5]*scale),planeSet[6]);

    plane.name=planeSet[0];

    //plane.visible=false;

    scene.add(plane);

    })

    }

    function init() {

    container = document.getElementById("space")

    camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 500000 );

    camera.position.set(0, 0, 1500);

    scene = new THREE.Scene();

    var ambient = new THREE.AmbientLight( 0xffffff );

    scene.add( ambient );

    var directionalLight = new THREE.DirectionalLight( 0xffffff );

    directionalLight.position.set( -5, 5, 5).normalize();

    scene.add( directionalLight );

    addPlanes();

    renderer = new THREE.WebGLRenderer();

    renderer.setPixelRatio( window.devicePixelRatio );

    renderer.setSize( window.innerWidth, window.innerHeight );

    container.appendChild( renderer.domElement );

    document.addEventListener( 'mousemove', onDocumentMouseMove, false );

    window.addEventListener( 'resize', onWindowResize, false );

    window.addEventListener( 'mousewheel', onMouseWheel, false );

    }

    function onWindowResize() {

    windowHalfX = window.innerWidth / 2;

    windowHalfY = window.innerHeight / 2;

    camera.aspect = window.innerWidth / window.innerHeight;

    camera.updateProjectionMatrix();

    renderer.setSize( window.innerWidth, window.innerHeight );

    }

    function onMouseWheel(event){

    if(event.wheelDelta>0){

    new TWEEN.Tween( camera.position )

    .to( {z:camera.position.z+2500}, 1500 )

    .start();

    }

    if(event.wheelDelta<0){

    new TWEEN.Tween( camera.position )

    .to( {z:camera.position.z-2500}, 1500 )

    .start();

    }

    }

    function onDocumentMouseMove( event ) {

    mouseX = ( event.clientX - windowHalfX ) / 2;

    mouseY = ( event.clientY - windowHalfY ) / 2;

    }

    //

    function animate() {

    requestAnimationFrame( animate );

    render();

    TWEEN.update();

    }

    function render() {

    camera.position.x += ( mouseX - camera.position.x ) ;

    camera.position.y += ( mouseY - camera.position.y ) ;

    camera.lookAt( new THREE.Vector3(0,0,-20000) );

    renderer.render( scene, camera );

    }

    展开全文
  • 我们构造能斯特度量的最小五维超重力耦合到任意数量的矢量多重态的能斯特(Nernst)brane解,即极值极限内熵密度为零的黑麸。 标量采用特定的常数值并根据FI参数动态确定宇宙常数的值,而度量标准则采用增强型AdS ...
  • ylbtech-学术-几何-维:超级立方体 (五维超级超立方体) 五维超级超立方体即五维超级超正方体(超超立方体) 五维超级超立方体,在几何学中五维方体是立方体的五维类比,五维方体之于四维超立方体,四维超...
    ylbtech-学术-几何-维:超级立方体 (五维超级超立方体)
    五维超级超立方体即五维超级超正方体(超超立方体)
    五维超级超立方体,在几何学中五维方体是立方体的五维类比,五维方体之于四维超立方体,四维超立方体之于立方体就如立方体之于正方形
    1.返回顶部
    1、
    中文名:五维超级超立方体
    2、
    2.返回顶部
    1、
    维数序号:1 2 3 4 5
    维数代码:x y z t u
    边长:8
    焦点:该“超超立方体”的中心点(大家能明白的)
    旋转:x-y y-z z-t t-u x-u 均逆时针旋转20度
      x-z x-t y-t y-u z-u 均顺时针旋转20度
    视点位置:u = -0.1
    投影载体:u = -0.05
    下面按z-t x-y x-z x-t y-z y-t 的顺序展示(展示图中有u轴的均为一直线不予展示)
    2、
    3.返回顶部
    1.1

     

     1.2
    4.返回顶部
     
    5.返回顶部
    1、
    2、
     
    6.返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    转载于:https://www.cnblogs.com/storebook/p/10694359.html

    展开全文
  • 坐标系间的变换1. 二坐标系间的变换下节的二观察中,会涉及到从观察坐标系到世界坐标系的变换,因此我们介绍从一个笛卡尔坐标系xy,变换到另一个笛卡尔坐标系(x’,y’)的思想。其中x’y’坐标系用xy坐标的...

    二维坐标系间的变换

    1.   二维坐标系间的变换

    下节的二维观察中,会涉及到从观察坐标系到世界坐标系的变换,因此我们介绍从一个笛卡尔坐标系xy,变换到另一个笛卡尔坐标系(x’,y’)的思想。其中x’y’坐标系用xy坐标的一点(xo,yo)作为原点,并有一个指定的方向角θ。

    变换步骤

    1)      将x’y’系统的坐标原点平移到xy系统的原点(0,0);

    2)      将x’轴旋转到x 轴上。

     

     

    坐标原点的平移可以使用下列矩阵操作表示:

      

    平移操作后,为了将两个系统的轴重合,可以顺时针旋转:

    将这两个变换矩阵合并起来,就可以定义出从x’y’系统变换到xy系统的符合矩阵:

    另一种方法是,指定一个表明正y’轴方向的向量V。将向量V指定为xy参照系中相对于xy坐标系原点的一个点。那么,在y’方向上的单位向量可以计算为

    通过将v顺时针旋转90°,得到沿x’轴的单位向量u:

    因为任何旋转矩阵的元素可以表示为一组正交单位向量的元素,因此x’y’系统旋转到xy系统重合的矩阵可以写为:


    展开全文
  • 维几何变换(平移、旋转、缩放)本章涉及数学变换比较多,代码是次要的,数学理论可自己推导一下。【二维平移】通过将二维量加到一个点的坐标上来生成一个新的坐标位置,可以实现一次平移。将平移距离加到原始坐标...
  • 矩阵表示和齐次坐标本节矩阵变换公式较多,为方便,设置为图片格式,但实例代码可复制,这样不影响学习,如果需要word版,请私聊。为方便阅读,图片水印加到了最右下角,但是个人劳动成果,未经过同意,请勿转载...
  • 六(2)、three.js中的几何体——三维几何体一、BoxGeometry1.1 构造器参数说明二、ConeGeometry2.1 构造器参数说明三、CylinderGeometry3.1 构造器参数说明四、TetrahedronGeometry4.1 构造器参数说明、...
  • 作者最近提出了一种用于显式计算CY模空间量度的新方法。 该方法利用了模空间与某个Frobenius代数的联系。 在这里,我们通过计算绕双折点的三重五边形的101模空间的特殊几何形状,来阐明这种方法并证明其效率。
  • 目录对变换函数作用范围的疑惑解答:...参考资料:《opengl编程基础(第三版)》第几何变换 对变换函数作用范围的疑惑 平移:glTranslate 旋转:glRotate 缩放:glScale 书上对于这些函数的描述都提到所有顶点...
  • 【Three.js】、three.js中的几何
  • 题意不说了 ,看图就看懂了= =! 思路: 本来还想是一个纯数学计算题目,算了许久没算出来,经队友指点 恍然大悟!= =! 根据输入的A,B,C三个点坐标算出 AB BC CA 三...既然输出整数, 注意四舍入! #incl
  • 在本文中,讨论了建立五维四阶重力模型的可能性,该模型的低维还原可以为宇宙学四维物质-能量分量的解释。 我们描述了模型的基本概念,完整的场方程形式和5维到4维的还原过程。 五维f(R)场方程在正交于额外坐标的...
  • 我们研究了五维超重力中一类新的超对称解,该超对称解表示共维2振子沿任意曲线的多中心构型。 Codimension-2麸皮是在一般情况下通过超管效应从高等维度的普通麸皮中生产出来的,当它们是奇异的麸皮时,时空通常会...
  • 数据集包括 15K 带注释的视频剪辑,并补充了从地理多样的样本中收集的超过 4M 带注释的图像(覆盖大洲的 10 个国家)。机器学习(ML)的最新技术已经在许多计算机视觉任务上取得了SOTA的结果,...
  • CCPC网赛第八题,求立体几何数量,题解见注释 //立体几何-求满足要求的四面体个数 //要求1:至少4条边相等 //要求2:四条边相等时,另两条边一定不...//如果四条边或条边相同,则只存在两种重复情况(当前...
  • HDU6354 Everything Has Changed 多校第几何题 爱德华是铝循环机械的工人。他的工作是操作机械臂来切割设计模型。以下是他的工作简介。 假设操作平面为二坐标系。首先,有一个带中心坐标的圆盘(0 ,0 ) ...
  • 这种几何形状是洛夫洛克重力理论与阿贝尔规范场耦合的电真空解决方案。 电通量足以支撑虫洞的喉咙并稳定溶液。 实际上,我们证明,与以前在该理论中发现的其他虫洞解决方案相比,此处构造的虫洞解决方案在标量摄动...
  • 维几何体 PlaneGeometry-矩形面 //PlaneGeometry 矩形面(宽度,高度,宽线段数,高线段数) var plane = createMesh(new THREE.PlaneGeometry(10, 14, 4, 4)); //多个面...
  • 原文链接:Kinect for Windows SDK开发入门():景深数据处理 3. 对物体进行测量 像上篇文章中对深度值测量原理进行讨论的那样,像素点的X,Y位置和实际的宽度和高度并不一致。但是运用几何知识,通过他们对物体...
  • 如果有一个场景的两个视图以及视图中的对应图像点,那么根据照相机间的空间相对位置关系、照相机的性质以及三场景点的位置,可以得到对这些图像点的一些几何关系约束。 外极几何是研究两幅图像之间存在的几何。它...
  • 05.ThreeJs开发指南-第章-几何

    千次阅读 2016-09-02 15:22:52
    章 学习使用几何体二维几何体:一、PlaneGeometry:平面var plane = new THREE.PlaneGeometry(width,height,widthSegments,heightSegments);width: 必须,矩形宽度 height:必须,矩形高度 widthSegments:可选...
  • 我们研究了存在一阶α'-校正的非均质超重力中核的T-对偶链。 通过对异质NS5-branes溶液进行α'-校正的T-对偶变换,我们得到了与对称,中性和标准NS5-branes相关的KK5-brane和奇异的5 2 2 -brane溶液。 我们发现,...
  • 多视图几何1 外极集合 本章讲解如何处理多个视图,以及如何利用多个视图的集合关系来恢复照相机位置信息和三结构。通过在不同视点拍摄的图像,我们可以利用特征匹配来计算出三场景点以及照相机位置。本章会介绍...
  • --几何变换与图像标准(一)点变换(二)仿射变换(三)投影变换(四)应用于图像的几何变换()MATLAB 中的图像坐标系统5.1 输出图像位置5.2 控制输出网格(六)图像内插6.1 二内插6.2 内插方法的比较(七) ...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 312
精华内容 124
关键字:

五维几何