二维

OSG 两个相机

独自空忆成欢 提交于 2019-12-20 21:09:58
在场景中创建两个视口。其中一个用于从坦克驾驶员的视角观察场景。该视口将被渲染于屏幕的上半部分。第二个视口由缺省的osgViewer::Viewer类接口(轨迹球,飞行等控制器)控制。它将被渲染于屏幕的中下部分。 概述: OSG向开发人员提供了各种的抽象层次接口。前面的教程讨论的主要是一些较高层级的接口应用:例如使用Viewer类来控制视点,场景,交互设备和 窗口系统。OSG的优势之一,就是可以允许开发者在使用高层次的接口的同时,访问较低层次的抽象接口。本章将使用一些低抽象层级的功能,对视点进行控制, 并使用相应的类渲染场景。 代码: 为了创建两个视口,我们需要提供两个独立可控的摄像机。与OSG 1.2版本中所述不同的是,本例中将不再使用Prodecer::CameraConfig类,而是将多个不同的视口添加到组合视口 CompositeViewer类当中。下面的函数即用于实现添加视口并设置其中的摄像机位置。 void createView (osgViewer::CompositeViewer *viewer,//查看器,一个相框 osg::ref_ptr<osg::Group> scene,//场景 osg::ref_ptr<osg::GraphicsContext> gc,//显示设置定义相框的大小,View和Viewr在屏幕上的大小,位置 osgGA:

UVA 11019 - Matrix Matcher(二维hash)

▼魔方 西西 提交于 2019-12-19 00:28:44
UVA 11019 - Matrix Matcher #include <bits/stdc++.h> using namespace std; #define rint register int #define rll register long long typedef long long ll; const int maxn = 1e3 + 100; const int base1 = 233, base2 = 2333; char a[maxn][maxn], b[maxn][maxn]; unsigned long long ha[maxn][maxn], hb[maxn][maxn]; int main() { freopen("in.txt", "r", stdin); rint _; scanf("%d", &_); while (_--) { rint n, m, x, y; scanf("%d %d", &n, &m); for (rint i = 1; i <= n; i++) scanf("%s", a[i] + 1); scanf("%d %d", &x, &y); for (rint i = 1; i <= x; i++) scanf("%s", b[i] + 1); register unsigned long long p1 = 1, p2 = 1;

三维校园电子地图设计

ぐ巨炮叔叔 提交于 2019-12-17 10:50:28
三维校园电子地图是我在大学的时候为学校设计三维校园导航系统,采用 C# 语言和 Managed DirectX 2.0 技术开发的三维地图引擎。可是就目前来看,微软并不打算进一步对 Managed DirectX 发展,取而代之的则是 XNA (微软力推的游戏开发平台,多用于开发 XBOX 的游戏),同时也在进一步的拓展 DirectX ( C++ )的功能。本着 C# 语言的强大性和简易性,我相信在不久的将来 XNA 开发队伍会越来越壮大。目前我是踏着 C++ 和 C# 双向路线来学习和研究 DirectX 的相关技术。 在学校开发三维校园电子地图引擎的时候我把大量的时间花在了校园地理数据采集、模型设计和地图引擎框架设计方面,所以在三维校园电子地图引擎中并没有很深入的运用到 DirectX 三维图形编程技术,在 Terrain 方面也做得不够好,但是它重点在于功能和运用方面的开发,以达到一个智能化三维电子地图的平台。从实现的效果上来看我还是非常满意的,而且当时作品还获得了毕业设计全校第一名,稍微自豪一下 :)。我打算用 DirectX 技术把三维电子地图引擎用 C++ 重写一遍,在其中加入地形、平截头体选择、场景管理、智能摄像机、碰撞检测、骨骼动画、模型层次细节优化等技术,使得地图引擎更加逼真完美。 以下是三维电子地图引擎设计的介绍,主要把整个三维电子地图引擎的创建过程描述了一遍

细菌繁殖(二维加时间轴)

孤街醉人 提交于 2019-12-14 19:23:10
描述 在边长为9的正方形培养皿中,正中心位置有m个细菌。假设细菌的寿命仅一天,但每天可繁殖10个后代,而且这10个后代,有两个分布在原来的单元格中,其余的均匀分布在其四周相邻的八个单元格中。求经过n(1≤n≤4)天后,细菌在培养皿中的分布情况。 输入 输入为两个整数,第一个整数m表示中心位置细菌的个数(2 ≤ m ≤ 30),第二个整数n表示经过的天数(1 ≤ n ≤ 4)。 输出 输出九行九列整数矩阵,每行的整数之间用空格分隔。整个矩阵代表n天后细菌在培养皿上的分布情况。 样例输入 2 1 样例输出 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 4 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #include <iostream> using namespace std; int i,j,k; #define A 10000+5 int main() { int a[5][10][10]={0}; int m,n; cin>>m>>n; a[0][4][4]=m; for(i=0;i<n;i++) { for(j=0;j<9;j++) { for(k=0

脉动阵列在二维矩阵乘法及卷积运算中的应用

你说的曾经没有我的故事 提交于 2019-12-14 19:11:02
脉动阵列(Systolic Array)本身是一个“古老”的概念,在1982年就已经提出了,可是,最近由于Google的TPU采用了这个结构作为计算的核心结构,脉动阵列又一次地火了起来。我也是因为关注TPU才开始去了解脉动阵列的,但是由于目前脉动的阵列比较零散,在搞明白脉动阵列以及TPU怎么使用脉动阵列进行卷积的过程中走了很多“弯路”,所以就用这篇文章作为我学习脉动阵列的笔记,也记录一下我自己对脉动阵列的理解,如果理解有误不到位的话,欢迎指出。 一、什么是脉动阵列? 脉动阵列,本身的核心概念就是让数据在运算单元的阵列中进行流动,减少访存的次数,并且使得结构更加规整,布线更加统一,提高频率。 可以看下面这个图,传统计算结构和脉动阵列结构的对比。左边是传统的计算架构,可用于各种形式的计算。CPU、GPU就是这种架构,用寄存器存储数据,一个程序告诉ALU从寄存器中取数,然后执行一种操作(例如加法、乘法或者逻辑操作),然后再把结果写会指定的寄存器中。脉动阵列,第一个ALU取数,经过处理后被传递到下一个ALU同时第二个数据进入第一个ALU。依次类推。在第一个数据到最后一个ALU之后,每个周期都能得到一个结果。这样,脉动阵列可以平衡IO读写与运算,在消耗较小memory带宽的情况下提高吞吐率,有效解决数据存取速度远远大于数据处理速度的结构。 脉动阵列本身只是一个有数据流动的结构

搜索二维矩阵 II

孤街醉人 提交于 2019-12-14 05:42:28
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 target = 5,返回 true。 给定 target = 20,返回 false。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-a-2d-matrix-ii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int size = matrix.size(); int size1; if(size > 0) size1 = matrix[0].size(); //cout << size << endl; if(size < 1 || size1 == 0) return false; /

leet74搜索二维矩阵

烂漫一生 提交于 2019-12-10 02:20:50
public static boolean searchMatrix ( int [ ] [ ] matrix , int target ) { int m = matrix . length ; if ( m == 0 ) return false ; int n = matrix [ 0 ] . length ; // 二分查找 int left = 0 , right = m * n - 1 ; int pivotIdx , pivotElement ; while ( left <= right ) { pivotIdx = ( left + right ) / 2 ; pivotElement = matrix [ pivotIdx / n ] [ pivotIdx % n ] ; if ( target == pivotElement ) return true ; else { if ( target < pivotElement ) right = pivotIdx - 1 ; else left = pivotIdx + 1 ; } } return false ; } 来源: CSDN 作者: ldd儆儆 链接: https://blog.csdn.net/qq_38304320/article/details/103463160

leet240搜索二维矩阵 II

不问归期 提交于 2019-12-09 19:08:56
我的代码 public static boolean searchMatrix ( int [ ] [ ] matrix , int target ) { for ( int i = 0 ; i < matrix . length ; i ++ ) { int left = 0 ; int right = matrix [ i ] . length - 1 ; while ( left <= right ) { int mid = ( left + right ) / 2 ; if ( matrix [ i ] [ mid ] > target ) right = mid - 1 ; else if ( matrix [ i ] [ mid ] < target ) left = mid + 1 ; else return true ; } } return false ; 官方的 时间复杂度:O(n+m) public boolean searchMatrix ( int [ ] [ ] matrix , int target ) { // start our "pointer" in the bottom-left int row = matrix . length - 1 ; int col = 0 ; while ( row >= 0 && col < matrix [ 0

二维背包---P1509 找啊找啊找GF

喜你入骨 提交于 2019-12-09 17:18:50
P1509 找啊找啊找GF 题解 很明显这是一道二维背包题目 如果一个dp数组做不了,那么我们就再来一个dp数组 题目要求,花费不超过 m ,消耗人品不超过 r ,泡到尽量多的妹子,时间尽量少 f [ i ][ j ] 花费不超过 m ,消耗人品不超过 j ,可以泡到的最多妹子数量 g [ i ][ j ] 花费不超过 m ,消耗人品不超过 j ,可以泡到最多妹子的最少时间 注意: 1. f [ i ][ j ] 可能相同但是对应的 g[ i ][ j ] 有不同,即 2. ans 可能相同但是对应的 g[ i ][ j ] 有不同,即 3.虽然上边说的差不多是一回事,但是还是提醒一句,这个人要泡到尽量多的妹子,而且他可能泡不到 代码 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<string> #include<cstring> #include<queue> using namespace std; typedef long long ll; inline int read() { int ans=0; char last=' ',ch=getchar(); while(ch<'0'||ch>'9') last=ch,ch

动手学PyTorch | (19) 二维卷积层

…衆ロ難τιáo~ 提交于 2019-12-08 14:54:39
卷积神经⽹络(convolutional neural network)是含有卷积层(convolutional layer)的神经⽹络。 本章中介绍的卷积神经网络均使⽤最常⻅的二维卷积层。它有高和宽两个空间维度,常⽤来处理图像数据。本节中,我们将介绍简单形式的二维卷积层的工作原理。 目录 1. 二维互相关运算 2. 二维卷积层 3. 图像中物体边缘检测 4. 通过数据学习核数组 5. 互相关运算和卷积运算 6. 特征图和感受野 7. 小结 1. 二维互相关运算 虽然卷积层得名于卷积(convolution)运算,但我们通常在卷积层中使用更加直观的互相关(cross- correlation)运算。在⼆维卷积层中,⼀个二维输⼊数组和⼀个⼆维核(kernel)数组通过互相关运算输出⼀个二维数组。 我们用⼀个具体例子来解释二维互相关运算的含义。如下图所示,输⼊是⼀个⾼和宽均为3的⼆维数组。我们把该数组的形状记为3x3或(3,3).核数组的高和宽分别为2.该数组在卷积计算中⼜称卷积核或过滤器(filter)。卷积核窗口(⼜称卷积窗⼝)的形状取决于卷积核的⾼和宽,即2x2.下图中的阴影部分为第一个输出元素及其计算所使⽤的输⼊和核数组元素:0x0+1x1+3x2+4x3 = 19. 在⼆维互相关运算中,卷积窗口从输⼊数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动