C++实现网格水印之调试笔记(三)—— 初有结果
错误:
error C2338: THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD



这种错误不会直接定位到行,要自己慢慢看代码,找出不正确的访问。
原因:使用[]访问引起的错误,eigen中矩阵的访问不用用[]
解决方法:将[ ]改为( )
修改错误之后,编译通过了,但运行时会中断。
调试时,遇到代码不会跳转的问题

当在调试模式下代码运行到eigenDef.calLapMatrix()时,不会跳入到函数里面运行,在vs中设置断点后,断点一致无法命中,断点的红心原点编程一个空心的黄色,还有一个感叹号

解决:在工具 à 选项 à 调试 à 常规中去掉"要求源文件与原始版本完全匹配"前面的勾

但是修改了这个设置后可能会导致修改过vs代码后,即使重新生成,但运行的结果仍然是上次的结果,这个莫名其妙的问题一度困扰了我好久,在师兄的帮助下,了解到是pdb的问题,然后
解决:这个时候可以常识将代码格式化,快捷键为:ctrl + k 然后 ctrl + f
错误:R6010 –abort() has been called

错误发生在,给V_matrix赋值的时候




原因是矩阵在使用之前没有初始化大小
解决:可以使用下面的语句设置矩阵大小同时将其初始值设置为0

错误:matlab代码中的错误提示信息如下

对应的matlab代码如下:

这个问题调试了好久都没找出错误原因,后来把文件复制了一份,然后修改了文件名和函数名以及输出的矩阵名,然后就可以了,也许是matrix不能用作变量名和函数名?
解决:修改文件名和函数名

/////////////////////////////////////////////////////////////////////////////////
修正了上述错误之后,得到的结果和预期还是差很多,所以要开始修改逻辑上的一些错误了。
初步估计是在解方程的时候出现了错误。准备检查是否是矩阵赋值不正确。
左边:前10个顶点坐标, 右边:传入matlab中的顶点坐标

下面的赋值语句是修改后的结果,修改后,顶点数据的赋值正确了。


以及E矩阵:(图片为正确结果)

R矩阵:

修改后得到的结果
输入:

输出:

以及前10个顶点修改前后坐标值:

肉眼已经看不太出模型有什么变化了
C++实现网格水印之调试笔记(三)—— 初有结果的更多相关文章
- C++实现网格水印之调试笔记(六)—— 提取完成
昨天在修改了可以调试出来的错误之后,提取出的水印和嵌入的仍然相去甚远.这个时候我觉得有必要整理一下嵌入和提取的整个过程. 嵌入过程: Step1,嵌入的时候对网格的拉普拉斯矩阵L进行特征值分解,得到特 ...
- C++实现网格水印之调试笔记(六)——补充
调用matlab生成的网格水印特征向量矩阵 从文件中读取的原始网格的特征向量矩阵 好吧,之前得出的结果不正确是因为代码写错了.因为实现论文中的提取方案时代码写错了,自己想了另外一个方法,结果方向两者在 ...
- C++实现网格水印之调试笔记(五)—— 提取出错
在实现提取水印的过程中,遇到了一些问题 首先还是根据论文中的思路来梳理一下整个提取流程 读入两个模型,一个原始模型ori_mesh, 一个水印模型wm_mesh. 将两个模型对齐(即放在同一个坐标系下 ...
- C++实现网格水印之调试笔记(二)
整理了一下要实现的论文Watermarking 3D Polygonal Meshes in the Mesh Spectral Domain,步骤如下: 嵌入水印 à 提取水印 à 优化(网格细分) ...
- C++实现网格水印之调试笔记(四)—— 完成嵌入
接下来的问题是,当模型是对称的时候,结果是符合预期的,但是当模型是不对称的时候,结果是错误的,如下: 输入: 顶点:233 输出: 这又是什么鬼...,我的马呢!!! 看来逻辑上还是有错误 注意这时候 ...
- C++实现网格水印之调试笔记(一)
首先说一下我的一些简单的调试方法,除了常规的断点调试之外,我还会使用注释的方法来调试.当整个工程代码量相当多且调用层次关系较为复杂时,这种方法能够比较高效的定位到出错误的代码段或某个函数,然后在出现错 ...
- JavaScript特效(调试笔记)
JavaScript特效 一.在网页上显示当前的时间日期,例如:“2016年3月26日 星期六”. js源代码: function getTime() { var today = new Date() ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- 响应式编程笔记三:一个简单的HTTP服务器
# 响应式编程笔记三:一个简单的HTTP服务器 本文我们将继续前面的学习,但将更多的注意力放在用例和编写实际能用的代码上面,而非基本的APIs学习. 我们会看到Reactive是一个有用的抽象 - 对 ...
随机推荐
- lintcode:Binary Tree Postorder Traversal 二叉树的后序遍历
题目: 二叉树的后序遍历 给出一棵二叉树,返回其节点值的后序遍历. 样例 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [3,2,1] 挑战 你能使用非递归实现么? 解题: 递归程序 ...
- React 性能调优原理
一.React影响性能的两个地方 二.调优原理
- 247. Strobogrammatic Number II
题目: A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at ups ...
- 谷歌上不了?hoststool一键搞定host 支持在线更新
https://hosts.huhamhire.com/ http://serve.netsh.org/pub/ipv4-hosts/
- asp.net开源CMS推荐
随着网络技术的发展,目前国内CMS的开发商越来越多,各自都有其独特的优势,大家在选择的时候觉得眼花缭乱,不知道选择哪个比较好,我个人认为开源的CMS还是适合我们学习及研究使用,下边就几个国内的asp. ...
- ios越狱开发第一次尝试记录
1.THEOS的makefile文件中的THEOS_DEVICE_IP要写在第一行 2.如果make package install报错 dpkg status database is locked ...
- Zookeeper集群和HBase集群
1.部署Zookeeper集群(hadoop0\hadoop1\hadoop2) 1.1.在hadoop0上解压缩Zookeeper-3.4.5.tar.gz 1.2.执行命令 cp conf/zoo ...
- HDU 1698 Just a Hook (线段树 成段更新 lazy-tag思想)
题目链接 题意: n个挂钩,q次询问,每个挂钩可能的值为1 2 3, 初始值为1,每次询问 把从x到Y区间内的值改变为z.求最后的总的值. 分析:用val记录这一个区间的值,val == -1表示这 ...
- android上的缓存、缓存算法和缓存框架
1.使用缓存的目的 缓存是存取数据的临时地,因为取原始数据代价太大了,加了缓存,可以取得快些.缓存可以认为是原始数据的子集,它是从原始数据里复制出来的,并且为了能被取回,被加上了标志. 在andr ...
- 获取本机外网ip和内网ip
获取本机外网ip //获取本机的公网IP public static string GetIP() { string tempip = ""; try { WebRequest r ...