1

当用户按下按钮时,我在图像上使用 Animated 以编程方式缩放图像。

  handleZoomIn() {
    this.zoom += -0.25;
    Animated.spring(this.animatedValue, {
      toValue: this.zoom
    }).start()   }

  handleZoomOut() {
    this.zoom += 0.25;
    Animated.spring(this.animatedValue, {
      toValue: this.zoom,
      friction: 3,
      tension: 40
    }).start()   }
    const imageStyle = {
      transform: [{ scale: this.animatedValue}]
    } 

   render() {
      <Animated.Image source={{ uri: source }} style={[imgSize, { position: 'absolute' }, imageStyle]} />
   }

有图像和缩放图像。 在此处输入图像描述

如何计算两个图像左上角之间的距离?

偏移量不应该是吗?

(dx, dy) = ((originalWidth-(originalWidth X scale))/2, (originalWidth - (originalHeight X scale))/2)

4

1 回答 1

3

(dx, dy) = ((originalWidth-(originalWidth X scale))/2, (originalWidth - (originalHeight X scale))/2)

基本上是的,但是您也有在高度中使用“宽度”的复制/粘贴错字,即: (dx, dy) = ((originalWidth-(originalWidth * scale))/2, (originalHeight - (originalHeight * scale))/ 2)

这可以在经典的程序代码中稍微简化(可能是个人偏见),例如:

offsetFactor = (1.0 - scale) / 2;
dx = originalWidth * offsetFactor;
dy = originalHeight * offsetFactor;

如何计算两个图像左上角之间的距离?

哦,但是您的问题是关于距离的。那当然是d = sqrt((dx*dx) + (dy*dy));...但是程序员需要这个的时间有一半,平方距离(d_sq = (dx*dx) + (dy*dy);)就足够了,例如用于排序或检查是否在半径范围内(然后您与平方半径值进行比较)等......然后可以避免根计算,如果涉及很多值,这通常是主要的优化。(其中一个不可行的情况是 3D 中的光照着色模型,这使得“phong 着色”成为早期 3D 渲染器的一项相当昂贵的功能,因为您至少无法避免每个像素的不准确根计算)

于 2018-09-23T07:39:53.627 回答