示例#1
0
        public void CalculatePositionTarget(out TGCVector3 pos, out TGCVector3 targetCenter)
        {
            targetCenter = TGCVector3.Add(Target, TargetDisplacement);
            var m = TGCMatrix.Translation(0, OffsetHeight, OffsetForward) * TGCMatrix.RotationY(RotationY) * TGCMatrix.Translation(targetCenter);

            pos = new TGCVector3(m.M41, m.M42, m.M43);
        }
示例#2
0
        /// <summary>
        ///     Configurar valores de posicion y tamaño en forma conjunta
        /// </summary>
        /// <param name="position">Centro de la caja</param>
        /// <param name="size">Tamaño de la caja</param>
        public void setPositionSize(TGCVector3 position, TGCVector3 size)
        {
            var radius = TGCVector3.Scale(size, 0.5f);

            PMin = TGCVector3.Subtract(position, radius);
            PMax = TGCVector3.Add(position, radius);
        }
示例#3
0
        /// <summary>
        ///     Genera la proxima matriz de view, sin actualizar aun los valores internos
        /// </summary>
        /// <param name="pos">Futura posicion de camara generada</param>
        /// <param name="targetCenter">Futuro centro de camara a generada</param>
        public void CalculatePositionTarget(out TGCVector3 pos, out TGCVector3 targetCenter)
        {
            //alejarse, luego rotar y lueg ubicar camara en el centro deseado
            targetCenter = TGCVector3.Add(Target, TargetDisplacement);
            var m = TGCMatrix.Translation(0, OffsetHeight, OffsetForward) * TGCMatrix.RotationY(RotationY) * TGCMatrix.Translation(targetCenter);

            //Extraer la posicion final de la matriz de transformacion
            pos = new TGCVector3(m.M41, m.M42, m.M43);
        }
        /// <summary>
        ///     Construye la grilla
        /// </summary>
        private GrillaRegularNode[,,] buildGrid(List <TgcMesh> modelos, TgcBoundingAxisAlignBox sceneBounds, TGCVector3 cellDim)
        {
            var sceneSize = sceneBounds.calculateSize();

            var gx = (int)FastMath.Ceiling(sceneSize.X / cellDim.X) + 1;
            var gy = (int)FastMath.Ceiling(sceneSize.Y / cellDim.Y) + 1;
            var gz = (int)FastMath.Ceiling(sceneSize.Z / cellDim.Z) + 1;

            var grid = new GrillaRegularNode[gx, gy, gz];

            //Construir grilla
            for (var x = 0; x < gx; x++)
            {
                for (var y = 0; y < gy; y++)
                {
                    for (var z = 0; z < gz; z++)
                    {
                        //Crear celda
                        var node = new GrillaRegularNode();

                        //Crear BoundingBox de celda
                        var pMin = new TGCVector3(sceneBounds.PMin.X + x * cellDim.X, sceneBounds.PMin.Y + y * cellDim.Y,
                                                  sceneBounds.PMin.Z + z * cellDim.Z);
                        var pMax = TGCVector3.Add(pMin, cellDim);
                        node.BoundingBox = new TgcBoundingAxisAlignBox(pMin, pMax);

                        //Cargar modelos en celda
                        node.Models = new List <TgcMesh>();
                        addModelsToCell(node, modelos);

                        grid[x, y, z] = node;
                    }
                }
            }

            return(grid);
        }
示例#5
0
        /// <summary>
        ///     Actualiza el BoundingBox de la caja.
        ///     No contempla rotacion
        /// </summary>
        private void updateBoundingBox()
        {
            var midSize = TGCVector3.Scale(size, 0.5f);

            BoundingBox.setExtremes(TGCVector3.Subtract(translation, midSize), TGCVector3.Add(translation, midSize));
        }
        /// <summary>
        ///     Centro del Bounding Box
        /// </summary>
        public TGCVector3 calculateBoxCenter()
        {
            var axisRadius = calculateAxisRadius();

            return(TGCVector3.Add(pMin, axisRadius));
        }
示例#7
0
        private void updateBB()
        {
            var r = new TGCVector3(mesh.Radius, mesh.Radius, mesh.Radius);

            bb.setExtremes(TGCVector3.Subtract(mesh.Position, r), TGCVector3.Add(mesh.Position, r));
        }
示例#8
0
 public void Move(TGCVector3 v)
 {
     positionEye.Add(v);
     cameraFinalTarget.Add(v);
 }
示例#9
0
 public void move(TGCVector3 v)
 {
     eye.Add(v);
     target.Add(v);
 }