C# 当图像大小改变时,如何计算以抵消实际大小坐标值?
我想知道图像从中心拉伸时的坐标值 我知道纹理图像中的一个像素坐标,我通过将其与移动屏幕匹配来使用光线投射 但我不知道图像增长时坐标值是如何变化的 当图像增长时,如何计算以抵消实际尺寸坐标值 图像大小将增加到1.33fC# 当图像大小改变时,如何计算以抵消实际大小坐标值?,c#,image,unity3d,coordinates,C#,Image,Unity3d,Coordinates,我想知道图像从中心拉伸时的坐标值 我知道纹理图像中的一个像素坐标,我通过将其与移动屏幕匹配来使用光线投射 但我不知道图像增长时坐标值是如何变化的 当图像增长时,如何计算以抵消实际尺寸坐标值 图像大小将增加到1.33f 在Unity3D中可能有更简单的方法-我在那里没有任何经验-但这听起来像是一个相当简单的缩放问题 您需要了解以下内容: 图像中心的图像坐标 这是向量(宽度/2,高度/2) 图像中心的屏幕坐标 图像中心在屏幕上的位置 比例因子(1.33f,在本例中) 鉴于上述情况,您可以使用简
在Unity3D中可能有更简单的方法-我在那里没有任何经验-但这听起来像是一个相当简单的缩放问题 您需要了解以下内容:
- 图像中心的图像坐标
这是向量(宽度/2,高度/2)
- 图像中心的屏幕坐标
图像中心在屏幕上的位置 - 比例因子(
,在本例中)1.33f
public Vector2Int ScaleTouch(Vector2Int imgCentre, Vector2Int dispCentre, float scale, Vector2Int touch)
{
var x = imgCentre.x + (touch.x - dispCentre.x) * scale;
var y = imgCentre.y + (touch.y - dispCentre.y) * scale;
return Vector2Int.RoundToInt(new Vector2(x, y));
}
或者使用Vector2
和Vector2Int
中的方法,您可以执行以下操作:
public Vector2Int ScaleTouch(Vector2Int imgCentre, Vector2Int dispCentre, float scale, Vector2Int touch)
{
var offset = Vector2.Scale(touch - dispCentre, new Vector2(scale, scale));
return offset + imgCentre;
}
两者都假设您的量表在
x
和y
中是均匀的。如果希望缩放向量在不同的轴上灵活缩放,可以提供缩放向量。在Unity3D中可能有更简单的方法-我在那里没有任何经验-但这听起来像是一个相当简单的缩放问题
您需要了解以下内容:
- 图像中心的图像坐标
这是向量(宽度/2,高度/2)
- 图像中心的屏幕坐标
图像中心在屏幕上的位置 - 比例因子(
,在本例中)1.33f
public Vector2Int ScaleTouch(Vector2Int imgCentre, Vector2Int dispCentre, float scale, Vector2Int touch)
{
var x = imgCentre.x + (touch.x - dispCentre.x) * scale;
var y = imgCentre.y + (touch.y - dispCentre.y) * scale;
return Vector2Int.RoundToInt(new Vector2(x, y));
}
或者使用Vector2
和Vector2Int
中的方法,您可以执行以下操作:
public Vector2Int ScaleTouch(Vector2Int imgCentre, Vector2Int dispCentre, float scale, Vector2Int touch)
{
var offset = Vector2.Scale(touch - dispCentre, new Vector2(scale, scale));
return offset + imgCentre;
}
两者都假设您的量表在
x
和y
中是均匀的。如果希望缩放向量在不同轴上灵活缩放,可以提供缩放向量。实际尺寸坐标
在什么位置?屏幕空间像素/厘米?WorldSpace 3d坐标?@derHugo real size坐标是屏幕空间像素真实尺寸坐标
在什么位置?屏幕空间像素/厘米?WorldSpace 3d坐标?@derHugo real size坐标是屏幕空间像素谢谢回答。ImgCenter的图像是否更大?还是原始图像?我想,var x=imgCenter.x+(touch.x-imgCenter.x)*缩放,这是正常工作的。谢谢你的回答。ImgCenter的图像是否更大?还是原始图像?我想,var x=imgCenter.x+(touch.x-imgCenter.x)*缩放,这是正常工作的。非常感谢。