【OpenMesh】Training:Getting Started with OpenMesh

本文介绍了使用OpenMesh库进行图形处理的过程,重点讲解了如何编写calc_valences()和color_coding()两个函数来计算顶点的valence,并根据valence的不同值为图形着色。此外还提供了一些代码优化建议。

内容出自236329 - Digital Geometry Processing, Spring2013 - Announcements上的OpenMesh Assignment感觉比较好,适合刚开始学习的同学。

练习要求:

这次的练习主要是写两个函数,calc_valences()和color_coding(),函数主要完成了计算一个Vertex的valence以及根据这个valence给图形上色,其中vertex的valence是保存在customer的property中。

关键代码:

写的时候主要在两个地方出现问题,一个是将customer的property保存在mesh_上之后怎么找到PropertyHandle,以及代码的效率有点低,没有充分利用OpenMeshSTL的威力。
添加Property的时候增加一个Property的名字,再通过名字返回PropertyHandle像这样,然后根据valence的值给Mesh上色。
mesh_.add_property(Valence,"Valence");

void ValenceViewer::calc_valences()
{
  // EXERCISE 1.2 /////////////////////////////////////////////////////////////
  // Compute valence of every vertex of "mesh_" and store them in each vertex
  // using for example custom attributes via dynamic customization
  // (hint: use the Mesh::VertexIter iterator)

  // Implement something here
	Mesh::VertexIter v_end=mesh_.vertices_end();
	//Mesh::Scalar TempValence=0;
	OpenMesh::VPropHandleT<int> Valence;
	mesh_.add_property(Valence,"Valence");
	for (Mesh::VertexIter v_it=mesh_.vertices_begin();v_it!=v_end;++v_it)
	{
		mesh_.property(Valence,v_it);
		for (Mesh::VertexVertexIter vv_it=mesh_.vv_iter(v_it);vv_it;++vv_it)
		{
			mesh_.property(Valence,v_it)+=1;
		}
		//cout<<mesh_.property(Valence,v_it)<<endl;
	}
  /////////////////////////////////////////////////////////////////////////////
}


//-----------------------------------------------------------------------------


void 
ValenceViewer::color_coding()
{
  // EXERCISE 1.3 /////////////////////////////////////////////////////////////
  // Implement a color visualization of your choice that shows the valence of
  // each vertex of "mesh_". 
  // (hint: use Mesh::Color color type)
   // Implement something here
	Mesh::VertexIter v_end=mesh_.vertices_end();
	//OpenMesh::VPropHandleT<int> Valence;
	Mesh::Color Green= Mesh::Color(0,255,0);
	Mesh::Color Red=Mesh::Color(255,0,0);
	Mesh::Color Blue=Mesh::Color(0,0,255);
	int Valence;
	OpenMesh::VPropHandleT<int> vPH;
	for (Mesh::VertexIter v_it=mesh_.vertices_begin();v_it!=v_end;++v_it)
	{
		mesh_.get_property_handle(vPH,"Valence");
		Valence=mesh_.property(vPH,v_it.handle());
		if (Valence>=4&&Valence<6)
		{
			mesh_.set_color(v_it.handle(),Blue);
		}
		else if (Valence>=7)
		{
			mesh_.set_color(v_it.handle(),Red);
		}
		else
		{
			mesh_.set_color(v_it.handle(),Green);
		}
		//mesh_.set_color(v_it.handle(),Green);		
	}
	cout<<"Edge:"<<mesh_.n_edges()<<"Face"<<mesh_.n_faces()<<"Vertex"<<mesh_.n_vertices()<<endl;
  /////////////////////////////////////////////////////////////////////////////
}



06-22
### 得物技术栈及开发者文档分析 得物作为一家专注于潮流商品的电商平台,其技术栈和开发者文档主要围绕电商平台的核心需求展开。以下是对得物技术栈及相关开发资源的详细解析: #### 1. 技术栈概述 得物的技术栈通常会涵盖前端、后端、移动应用开发以及大数据处理等多个领域。以下是可能涉及的主要技术栈[^3]: - **前端开发**: 前端技术栈可能包括现代框架如 React 或 Vue.js,用于构建高效、响应式的用户界面。此外,还会使用 Webpack 等工具进行模块化打包和优化。 - **后端开发**: 后端技术栈可能采用 Java Spring Boot 或 Node.js,以支持高并发和分布式架构。数据库方面,MySQL 和 Redis 是常见的选择,分别用于关系型数据存储和缓存管理。 - **移动应用开发**: 得物的移动应用开发可能基于原生技术(如 Swift/Kotlin)或跨平台框架(如 Flutter)。这有助于确保移动端应用的性能和用户体验一致性。 - **大数据云计算**: 在大数据处理方面,得物可能会使用 Hadoop 或 Spark 进行数据挖掘和分析。同时,依托云服务提供商(如阿里云或腾讯云),实现弹性扩展和资源优化。 #### 2. 开发者文档分析 类似于引用中提到的 Adobe 开发者文档模板[^2],得物也可能提供一套完整的开发者文档体系,以支持内部团队协作和外部开发者接入。以下是开发者文档可能包含的内容: - **API 文档**: 提供 RESTful API 或 GraphQL 的详细说明,帮助开发者快速集成得物的功能模块,例如商品搜索、订单管理等。 - **SDK 集成指南**: 针对不同平台(如 iOS、Android 或 Web)提供 SDK 下载和集成教程,简化第三方应用的开发流程。 - **技术博客**: 分享得物在技术实践中的经验成果,例如如何优化图片加载速度、提升应用性能等。 - **开源项目**: 得物可能将部分技术成果开源,供社区开发者学习和贡献。这不仅有助于提升品牌形象,还能吸引更多优秀人才加入。 #### 3. 示例代码 以下是一个简单的示例代码,展示如何通过 RESTful API 调用得物的商品搜索功能(假设接口已存在): ```python import requests def search_items(keyword, page=1): url = "https://api.dewu.com/v1/items/search" headers = { "Authorization": "Bearer YOUR_ACCESS_TOKEN", "Content-Type": "application/json" } params = { "keyword": keyword, "page": page, "size": 10 } response = requests.get(url, headers=headers, params=params) if response.status_code == 200: return response.json() else: return {"error": "Failed to fetch data"} # 调用示例 result = search_items("Air Jordan", page=1) print(result) ``` 此代码片段展示了如何通过 Python 请求得物的 API,并获取指定关键词的商品列表。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值