白话讲解QT中, setSceneRect

白话讲解setSceneRect

QGraphicsScene::setSceneRect ( qreal x, qreal y, qreal w, qreal h );
w,h 是寬高值,无需解释.
x,y 是左上角坐标,它是参考scene 坐标系的.
讲清这个位置有点绕, 还是用白话说吧,能读懂需要一定基础. 首先有2个坐标系的概念,

场景坐标系(scene 坐标系),  由真实物体构建的坐标系.

视口坐标系(view 坐标系).  由我们的眼睛看到的物体所构成的坐标系, 相当于摄像机的拉远,拉近功能.

其中场景坐标系总是在视口坐标系的中央区域, 像一个回字.

 

问: setSceneRect(x,y,w,h),  其x,y 左上角坐标到底是什么意思? 哪个坐标系?
答: 经研究, x,y左上角的数值是随便可以定义的,0值,负值,正值都可以,你当然应该选择一个有意义的值,例如
显示窗口的一半长度(-width/2, -height/2).
这个x,y 值决定了scene 坐标系的原点. 是不是有点绕?  再强调一次, x,y值决定了scene 坐标系原点位置!
而graphicItem 位置是针对scene 坐标系的.

关键在于,如果scene 的宽度,高度与view 的宽度,高度相同的话, 则scene 的左上角会对应到
view 的左上角, 当我们把view 拉大, 则scene 会向里挪,对应到view 的中部区域.
由于这个不变性,我们知道x,y 的不同数值,将会影响scene坐标原点在视图中的位置.从而影响graphickItem setPos()设置.
较好的一种设置方法是把scene 的原点设置到view 的中心点, 这样不管view拉大缩小,scene 的坐标原点都不会动了.方便位置计算.

如果你不限麻烦,这个中心点是可以随便设定的,但setPos()数值就要重新计算了.

常用的设置方法
setSceneRect(-width/2,-height/2,width,height);
备选的设置方法
setSceneRect(0,0,width,height)
这两种方法, graphicItem 调用setPos()函数的计算方法是不一样的.

其它设置方法不推荐

小结:
不变性是scene 在视口的中央.
x,y值将决定scene的坐标原点.
graphichItem 会参考scene坐标系.
------------------------------------------------------------
不能光说不练,给几个函数参考一下,重点是view->mapToScene(), view->mapFromScene()

// 视图坐标原点(0,0)对应场景坐标(场景坐标)
qDebug() << "view->mapToScene(0, 0):" << view->mapToScene(0, 0);

// 场景坐标原点(0,0)对应视图坐标(视图坐标)
qDebug() << "view->mapFromScene(0, 0):" << view->mapFromScene(0, 0);

// 场景左上角坐标(场景坐标)
QPointF p1 = QPointF(gScene->sceneRect().topLeft());
qDebug() << "p1:" << p1;

// 场景左上角对应视图坐标(视图坐标)
qDebug() << "view->mapFromScene(p1.x(), p1.y())" << view->mapFromScene(p1.x(), p1.y());

不管怎样设置x,y值, 场景左上角对应到视图中的坐标是不变的. 神奇性在这里, qt为我们背后做到了.

 

机器学习是一门涉及许多数学概念和方法的学科。《白话机器学习的数学》这本书以简洁易懂的语言,介绍了机器学习所涉及的数学知识,包括线性代数、概率论、统计学等内容。书通过大量的实例和案例,帮助读者理解数学在机器学习的应用,并且深入浅出地解释了数学原理对机器学习算法的影响。 首先,书讲解了线性代数在机器学习的重要性,涉及了向量、矩阵、特征值等概念,并解释了它们在数据处理和模型训练的作用。其次,书还介绍了概率论和统计学对机器学习的影响,例如贝叶斯统计、最大似然估计等方法在模型参数估计的应用,以及交叉验证、假设检验等统计学概念在模型评估的作用。 此外,书还涉及了优化算法和微积分等内容,帮助读者理解机器学习模型的训练过程和优化方法。除此之外,书还介绍了一些现代机器学习领域的前沿数学知识,如深度学习的神经网络结构、复杂模型的优化方法等。通过阅读这本书,读者可以系统地学习和理解机器学习所需要的数学知识,并且能够应用到实际的机器学习问题。 总之,《白话机器学习的数学》这本书是一本很好的数学入门读物,它适合对机器学习感兴趣的读者,无论是初学者还是有一定基础的人,都可以从获得启发和帮助。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值