投影是将一组数据从一种形式转换为另一种形式。
Pymeshlab 过滤器给出的结果带有伪影,而 Meshlab 则不然 - MLS 投影
我使用 Pymeshlab 中的过滤器compute_mls_projection_apss 将网格的细分版本投影到其原始原始网格上。如果我在 Meshlab 上执行此操作(过滤器 --> 点集 --> MLS
我想用C++算法和OpenCV4将单个圆形鱼眼图像转换为等距柱状图像。 这个想法来自我的计算机上加载的输入图像,如下所示: 我想获得一个
为什么mapboxapi返回一个倾斜的地图,其纬度明显不正确并且相对于数据错位?
我正在尝试创建几张跨宽纬度范围的地图。我正在通过 R 中的 mapboxapi 使用 Mapbox 地图。我想知道如何正确执行此操作,以便地图和数据...
如何将 IQueryable 转换为“表达式”<Func" to provide Projection list to NHibernate QueryOver?
请参考以下代码: 使用(ISession会话= SessionFactory.OpenSession()) { //情况 1:使用 Query = 效果很好。 IList listMaster = session.Query 请参考以下代码: using(ISession session = SessionFactory.OpenSession()) { //Case 1: using Query = works fine. IList<MasterDto> listMaster = session.Query<MasterEntity>() .ProjectTo<MasterDto>(autoMapperConfig) .ToList(); //Case 2: using QueryOver = how to achieve same result as above? IQueryable<MasterDto> masterDtos = session.Query<MasterEntity>() .ProjectTo<MasterDto>(autoMapperConfig); IList<MasterEntity> list = session.QueryOver<MasterEntity>() .Select(masterDtos)//This of-course does not work .List(); } 如果我在案例 2 中注释 Select(masterDtos),以上两种情况都会返回相同的结果。其他区别是生成的 SQL 查询。 在上面的情况 1 中,生成的 SQL 仅包含 Dto 中存在的列。它会跳过 Entity 中存在但 Dto 中不存在的附加列。这对于提高 SQL 查询性能是必要的。 传递给 autoMapperConfig 方法的 ProjectTo 参数有 AutoMapper.MapperConfiguration 的实例。 案例 1 工作正常。 但是我有大量使用 QueryOver 的遗留代码。 将此代码从 QueryOver 迁移到 Query NHibernate API 非常困难且容易出错。 所以,我正在考虑如何使用 QueryOver 来实现这一目标(选择选定的列)。 我已经知道的一种方法是使用 Select 和/或 SelectList 的 QueryOver 方法并向其传递适当的参数。 这会工作得很好;但这种方法几乎没有问题: 我必须输入每个投影/表达式作为这些方法的输入。 如果我以后更改 Dto,我应该记得更改投影列表。 所以,我在想上面代码中提到的一些事情。这可能吗?还有其他类似/更简单的解决方案吗? Query和QueryOver是两个不同的东西。他们以不同的方式工作。对于 QueryOver,您必须使用 Select 和/或 SelectList 的 QueryOver 方法,正如您在问题中指出的那样。 对于 Query(返回 IQueryable),ProjectTo 接受类型为 IConfigurationProvider 的参数,您将其作为 autoMapperConfig 提供。因此,你的第一个案例有效。 您的第二种情况完全错误,因为传递给 Select 方法的参数与类型不匹配。 以下代码与您的第一个案例类似并且可以正常工作: var autoMapperConfig = new MapperConfiguration ( cfg => { cfg.CreateProjection<MasterEntity, MasterDto>(); cfg.CreateProjection<DetailEntity, DetailDto>() .ForMember(dto => dto.MasterData, conf => conf.MapFrom(ol => ol.Master.MasterData)); cfg.CreateProjection<DetailEntity, DetailMiniDto>(); } ); using(ISession session = SessionFactory.OpenSession()) { IList<MasterDto> listMaster = session.Query<MasterEntity>() .Where(x => x.MasterId == 1) .ProjectTo<MasterDto>(autoMapperConfig) .ToList(); IList<DetailDto> listDetail = session.Query<DetailEntity>() .Where(x => x.Master.MasterId == 1) .ProjectTo<DetailDto>(autoMapperConfig) .ToList(); } 以下是MasterEntity、MasterDto和MasterMap: public class MasterEntity { public virtual int MasterId { get; set; } public virtual string MasterData { get; set; } public virtual IList<DetailEntity> DetailList { get; set; } } public class MasterDto { public string MasterData { get; set; } public IList<DetailMiniDto> DetailList { get; set; } } internal class MasterMap : ClassMapping<MasterEntity> { public MasterMap() { Table("MasterTable"); Id(x => x.MasterId, im => { im.Column("MasterId"); im.Generator(Generators.Identity); }); Property(x => x.MasterData, map => { map.Type(TypeFactory.GetAnsiStringType(5)); }); Bag ( x => x.DetailList, map => { map.Key(k => k.Column("MasterId")); }, rm => rm.OneToMany() ); } } 以下是DetailEntity、DetailDto、DetailMiniDto和DetailMap: public class DetailEntity { public virtual int DetailId { get; set; } public virtual string DetailData { get; set; } public virtual MasterEntity Master { get; set; } } public class DetailDto : DetailMiniDto { public string MasterData { get; set; } } public class DetailMiniDto { public int DetailId { get; set; } public string DetailData { get; set; } } internal class DetailMap : ClassMapping<DetailEntity> { public DetailMap() { Table("DetailTable"); Id(x => x.DetailId, im => { im.Column("DetailId"); im.Generator(Generators.Identity); }); Property(x => x.DetailData); ManyToOne(x => x.Master, map => { map.Column("MasterId"); map.Cascade(Cascade.None); }); } }
我使用 opencv 校准了我的单色相机。现在我知道相机的相机固有矩阵和畸变系数[K1,K2,P1,P2,K3,K4,K5,K6]。假设相机位于 [x, y, z] 且 [...
DTO类Spring Boot 3的@Query注解中的参数
我想使用以下 DTO 类来投影我的项目中的实体对象,以便根据给定的 id 值检索与我的个人资料相关的相应信息...
我想将相扑与虚幻引擎连接使用真实世界地图。 根据此页面(https://sumo.dlr.de/docs/Simulation/Distances.html),相扑模拟网络使用多种协调系统:...
数据适用于 MPL Hammer Projection,但不适用于 Cartopy Hammer Projection
我正在尝试使用锤子投影绘制一些数据。最初,我是从 MPL 开始的,当时它正在工作。这是代码(为了保密,替换了我实际导入的数据)...
我正在创建一个具有高度的 3D 地球仪: 我现在想要添加点击检测,以从 2D 屏幕 xy + 深度(通过点击)获取 3D 世界 xyz 位置。我正在使用以下代码(灵感来自 Get...
如何在 WebGL 中的片段着色器中获取单击点的 3D 坐标?
我绘制一个由物体(星星、精灵等)组成的单位球体,这些物体在该球体的“表面”上都有 3D 坐标。相机位于它的中心,我使用透视投影......
我正在尝试绘制 3D 数据集在其相应 xy、zy、zx 平面上的投影,但我没有找到任何相关信息。这似乎是一个被禁止的话题或者根本不可能做到。我
#包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #include <stdio.h> #include <stdlib.h> #include <string> #include <iostream> #include <fstream> #include <vector> #include <algorithm> #include <GL/glew.h> #include <GL/glut.h> #include <GL/glm/glm.hpp> #include <GL/glm/gtx/transform.hpp> // rotate(), scale(), translate() #include <GL/glm/gtc/quaternion.hpp> #include <GL/glm/gtc/type_ptr.hpp> using namespace std; GLuint VertexArrayID; GLuint programID; float sx = 0; float sy = 0; bool projMode = true; // true: perspective, false: ortho GLuint LoadShaders(const char* vertex_file_path, const char* fragment_file_path) { //create the shaders GLuint VertexShaderID = glCreateShader(GL_VERTEX_SHADER); GLuint FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER); GLint Result = GL_FALSE; int InfoLogLength; //Read the vertex shader code from the file string VertexShaderCode; ifstream VertexShaderStream(vertex_file_path, ios::in); if (VertexShaderStream.is_open()) { string Line = ""; while (getline(VertexShaderStream, Line)) VertexShaderCode += "\n" + Line; VertexShaderStream.close(); } //Compile Vertex Shader printf("Compiling shader : %s\n", vertex_file_path); char const* VertexSourcePointer = VertexShaderCode.c_str(); glShaderSource(VertexShaderID, 1, &VertexSourcePointer, NULL); glCompileShader(VertexShaderID); //Check Vertex Shader glGetShaderiv(VertexShaderID, GL_COMPILE_STATUS, &Result); glGetShaderiv(VertexShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); if (InfoLogLength > 0) { vector<char> VertexShaderErrorMessage(InfoLogLength); glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]); fprintf(stdout, "%s\n", &VertexShaderErrorMessage[0]); } //Read the fragment shader code from the file string FragmentShaderCode; ifstream FragmentShaderStream(fragment_file_path, ios::in); if (FragmentShaderStream.is_open()) { string Line = ""; while (getline(FragmentShaderStream, Line)) FragmentShaderCode += "\n" + Line; FragmentShaderStream.close(); } //Compile Fragment Shader printf("Compiling shader : %s\n", fragment_file_path); char const* FragmentSourcePointer = FragmentShaderCode.c_str(); glShaderSource(FragmentShaderID, 1, &FragmentSourcePointer, NULL); glCompileShader(FragmentShaderID); //Check Fragment Shader glGetShaderiv(FragmentShaderID, GL_COMPILE_STATUS, &Result); glGetShaderiv(FragmentShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); if (InfoLogLength > 0) { vector<char> FragmentShaderErrorMessage(InfoLogLength); glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, &FragmentShaderErrorMessage[0]); fprintf(stdout, "%s\n", &FragmentShaderErrorMessage[0]); } //Link the program fprintf(stdout, "Linking program\n"); GLuint ProgramID = glCreateProgram(); glAttachShader(ProgramID, VertexShaderID); glAttachShader(ProgramID, FragmentShaderID); glLinkProgram(ProgramID); // Check the program glGetProgramiv(ProgramID, GL_LINK_STATUS, &Result); glGetProgramiv(ProgramID, GL_INFO_LOG_LENGTH, &InfoLogLength); vector<char> ProgramErrorMessage(max(InfoLogLength, int(1))); glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]); fprintf(stdout, "%s\n", &ProgramErrorMessage[0]); glDeleteShader(VertexShaderID); glDeleteShader(FragmentShaderID); return ProgramID; } void renderScene(void) { //Clear all pixels glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //Let's draw something here glBindVertexArray(VertexArrayID); //define the size of point and draw a point. glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, 0); //Double buffer glutSwapBuffers(); } void mouse(int button, int state, int x, int y) { if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { projMode = !projMode; } } void init() { //initilize the glew and check the errors. GLenum res = glewInit(); if (res != GLEW_OK) { fprintf(stderr, "Error: '%s' \n", glewGetErrorString(res)); } //select the background color glClearColor(1.0, 1.0, 1.0, 1.0); glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glDepthRange(0.0f, 1.0f); } GLfloat cubeVertices[] = { // front -0.1f, 0.1f, 0.1f, -0.1f,-0.1f, 0.1f, 0.1f,-0.1f, 0.1f, 0.1f, 0.1f, 0.1f, -0.1f, 0.1f, 0.1f, 0.1f,-0.1f, 0.1f, // back 0.1f, 0.1f,-0.1f, -0.1f,-0.1f,-0.1f, -0.1f, 0.1f,-0.1f, 0.1f, 0.1f,-0.1f, 0.1f,-0.1f,-0.1f, -0.1f,-0.1f,-0.1f, // left -0.1f,-0.1f,-0.1f, -0.1f,-0.1f, 0.1f, -0.1f, 0.1f, 0.1f, -0.1f,-0.1f,-0.1f, -0.1f, 0.1f, 0.1f, -0.1f, 0.1f,-0.1f, // right 0.1f, 0.1f, 0.1f, 0.1f,-0.1f,-0.1f, 0.1f, 0.1f,-0.1f, 0.1f,-0.1f,-0.1f, 0.1f, 0.1f, 0.1f, 0.1f,-0.1f, 0.1f, // bottom 0.1f,-0.1f, 0.1f, -0.1f,-0.1f,-0.1f, 0.1f,-0.1f,-0.1f, 0.1f,-0.1f, 0.1f, -0.1f,-0.1f, 0.1f, -0.1f,-0.1f,-0.1f, // top 1.1f, 0.1f, 0.1f, 0.1f, 0.1f,-0.1f, -0.1f, 0.1f,-0.1f, 0.1f, 0.1f, 0.1f, -0.1f, 0.1f,-0.1f, -0.1f, 0.1f, 0.1f, }; GLfloat cubeColors[] = { // red 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, // green 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, // blue 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, // yellow 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, // cyan 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, // magenta 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, }; /* idx | coord: 0 | (1,1,1) 1 | (-1, 1, 1) 2 | (-1,-1,1) 3 | (1, -1, 1) 4 | (1, -1, -1) 5 | (1, 1, -1) 6 | (-1, 1, -1) 7 | (-1, -1, -1) */ GLfloat cubeIndices[] = { // front 0, 1, 2, 0, 1, 3, // back 5, 6, 7, 5, 6, 4, // left 1, 2, 6, 1, 2, 7, // right 0, 3, 4, 0, 4, 5, // top 0, 1, 5, 0, 1, 6, // bottom 2, 3, 4, 2, 4, 7, }; int main(int argc, char** argv) { //init GLUT and create Window //initialize the GLUT glutInit(&argc, argv); //GLUT_DOUBLE enables double buffering (drawing to a background buffer while the other buffer is displayed) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); //These two functions are used to define the position and size of the window. glutInitWindowPosition(200, 200); glutInitWindowSize(480, 480); //This is used to define the name of the window. glutCreateWindow("Simple OpenGL Window"); //call initization function init(); //0. programID = LoadShaders("VertexShader.txt", "FragmentShader.txt"); glUseProgram(programID); /**************************************************/ // model matrix glm::mat4 model = glm::mat4(1.0f); float rotateAngle = 45.0f; glm::vec3 rotateAxis(0.0f, 1.0f, 0.0f); model = glm::rotate(model, glm::radians(rotateAngle), rotateAxis); glm::vec3 scaleVec(5.0f, 5.0f, 5.0f); model = glm::scale(model, scaleVec); glm::vec3 translateVec(0.0f, 0.0f, 0.0f); model = glm::translate(model, translateVec); // view matrix glm::mat4 view = glm::lookAt(glm::vec3(5.0f, -5.0f, -5.0f), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f)); // proj matrix glm::mat4 proj; int width = glutGet(GLUT_WINDOW_WIDTH); int height = glutGet(GLUT_WINDOW_HEIGHT); if (projMode) { float aspectRatio = float(width) / height; proj = glm::perspective(glm::radians(45.0f), aspectRatio, 0.1f, 100.0f); } else { float orthoSize = 5.0f; proj = glm::ortho(-orthoSize, orthoSize, -orthoSize, orthoSize, 0.1f, 0.6f); } // model, view, proj matrix to shader GLint modelLoc = glGetUniformLocation(programID, "model"); glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model)); GLint viewLoc = glGetUniformLocation(programID, "view"); glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view)); GLint projLoc = glGetUniformLocation(programID, "proj"); glUniformMatrix4fv(projLoc, 1, GL_FALSE, glm::value_ptr(proj)); /**************************************************/ glGenVertexArrays(1, &VertexArrayID); glBindVertexArray(VertexArrayID); float vtxs[] = { -0.5, 0.0, 0.0, 0.5, 0.3, 0.0 }; GLuint VBOs[3]; glGenBuffers(3, VBOs); glBindBuffer(GL_ARRAY_BUFFER, VBOs[0]); glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 3 * 3 * 2 * 6, cubeVertices, GL_STATIC_DRAW); GLuint posAttribLoc = glGetAttribLocation(programID, "inPos"); glVertexAttribPointer(posAttribLoc, 3, GL_FLOAT, GL_FALSE, 0, (GLvoid*)(0)); glEnableVertexAttribArray(posAttribLoc); glBindBuffer(GL_ARRAY_BUFFER, VBOs[1]); glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 4 * 3 * 2 * 6, cubeColors, GL_STATIC_DRAW); GLuint colAttribLoc = glGetAttribLocation(programID, "color"); glVertexAttribPointer(colAttribLoc, 4, GL_FLOAT, GL_FALSE, 0, (GLvoid*)(0)); glEnableVertexAttribArray(colAttribLoc); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, VBOs[2]); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(float) * 6 * 6, cubeIndices, GL_STATIC_DRAW); GLuint idxAttribLoc = glGetAttribLocation(programID, "index"); glVertexAttribPointer(idxAttribLoc, 3, GL_FLOAT, GL_FALSE, 0, (GLvoid*)(0)); glEnableVertexAttribArray(idxAttribLoc); glutDisplayFunc(renderScene); glutMouseFunc(mouse); //enter GLUT event processing cycle glutMainLoop(); glDeleteVertexArrays(1, &VertexArrayID); return 1; } 我想用上面的代码绘制一个 3D 立方体,但我得到一个白色的窗口。如何在窗口上显示 3D 立方体? 如果我对 VBO 和 IBO 使用像“VBOs”这样的数组,如上面的代码所示,会出现问题吗? 另外,你能告诉我如何绘制多个立方体吗? 最后,如果您告诉我我的代码中还有其他问题,我将非常感谢您。 我是一个完全的初学者,说实话,我并不完全理解图形管道。但我真的很感谢你对我的作业的帮助。 type的参数glDrawElements为整数1。 您已将索引定义为实数数组: GLfloat cubeIndices[] = { // front 0, 1, 2, 因此,当 glDrawElements 工作并读取 cubeIndices 的内存时,它会遇到一些巨大的值(例如,整数值 1 作为浮点数为 0x3f80'0000)。您定义的索引完全不在顶点属性数组确定的范围内。
如何使用 Mongo Projections 排除数组的字段
我有一个要在 mongo 投影中排除的字段列表。使用 mongo 投影中的 except() 方法,我能够检索排除指定值的数据。 // 我的
MATLAB:如何基于相机视图创建存储在 3D 修补对象的 FaceVertexCData 中的数据的 2D 像素图?
最小可行示例: % 定义一个简单的 6 面立方体,其 X、Y 和 Z 维度为 0-1 顶点 = [0,0,1; % 1 前左上 (FTL) 1,0,1; %2 前右上方 (FTR) 1,0,...
MongoDB 驱动程序 Java:服务器上的“未知操作员:$project”
我有以下创建 Bson 过滤器的 java 代码(按预期工作)。 然而,当我尝试向过滤器添加投影时,我得到: 服务器上的“未知操作员:$project” 我是什么...
Mongo DB Bson 和 Java:在子文档中添加和返回仅存在于父文档中的字段?
我的cosmos DB中有以下文档结构(使用mongo查询语言): 孩子: { 编号:doc_123_2 家长 ID:123 活跃:真实 } 家长: { _id:doc_123 家长 ID:123 行动...
如何在MongoDB查找查询中获取投影中的嵌套对象? [ { “apikey”:1, “元”:{ “地区”: { “国家”:“印度”...
我的收藏中有以下文档 { “_id”:“12345”, “产品”: [ “产品1”, “产品2” ], “状态”:“ac...
我想将图像从球形投影到立方体贴图。根据我学习数学的理解,我需要为每个像素创建一个 theta、phi 分布,然后将其转换为笛卡尔系统以 g...
我有以下收藏 { “_id”:“12345”, “产品”: [ “产品1”, “产品2” ], “状态”:“活动”, } ...