精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

矩陣分解:Pixijs 中的 Matrix 和 Transform

開(kāi)發(fā) 前端
矩陣的優(yōu)點(diǎn)是計(jì)算方便,比如父節(jié)點(diǎn)和子節(jié)點(diǎn)都有 matrix,那子節(jié)點(diǎn)最終在畫(huà)布的 matrix 就是它們的矩陣直接相乘。缺點(diǎn)也明顯,就是它的值是幾個(gè)多種矩陣變換得到的數(shù)字,語(yǔ)義糟糕,看不出圖形做了什么形變。

大家好,我是前端西瓜哥。

在二維中,對(duì)于圖形(模型),它會(huì)有一個(gè)模型矩陣 matrix 來(lái)表達(dá)圖形的形變。

比如圖形先做了縮放,然后再位移,則模型矩陣為縮放矩陣左乘位移矩陣得到的復(fù)合矩陣。

矩陣的優(yōu)點(diǎn)是計(jì)算方便,比如父節(jié)點(diǎn)和子節(jié)點(diǎn)都有 matrix,那子節(jié)點(diǎn)最終在畫(huà)布的 matrix 就是它們的矩陣直接相乘。

缺點(diǎn)也明顯,就是它的值是幾個(gè)多種矩陣變換得到的數(shù)字,語(yǔ)義糟糕,看不出圖形做了什么形變。

這不利于我們對(duì)圖形的表達(dá)。

那么,有沒(méi)有辦法對(duì)矩陣做分解,得到多個(gè)形變的表達(dá)呢?

我們不妨看看 pixijs 怎么做的。

pixijs 里面有兩個(gè)類(lèi):Matrix 和 Transform。

Matrix

Matrix 是平面矩陣類(lèi),提供矩陣相關(guān)的各種方法。

Matrix 使用 6 個(gè)數(shù)字表達(dá),代表一個(gè) 3x3 的矩陣,用于平面矩陣變換。值有 a、b、c、d、tx、ty。

| a | c | tx|
| b | d | ty|
| 0 | 0 | 1 |

支持縮放、旋轉(zhuǎn)、位移、左乘、右乘、逆矩陣、計(jì)算點(diǎn)應(yīng)用矩陣后的結(jié)果等方法。支持鏈?zhǔn)綄?xiě)法。

縮放、旋轉(zhuǎn)、位移:

import { Matrix } from 'pixi.js';

const matrix = new Matrix();
// 返回一個(gè)默認(rèn)額單位矩陣
// [pixi.js:Matrix a=1 b=0 c=0 d=1 tx=0 ty=0]
// 1, 0, 0,
// 0, 1, 0,
// 0, 0, 1,

matrix.scale(3, 3);
// 放大為原來(lái)的 3 倍
// [pixi.js:Matrix a=3 b=0 c=0 d=3 tx=0 ty=0]
// 3, 0, 0,
// 0, 3, 0,
// 0, 0, 1,

// 支持鏈?zhǔn)綄?xiě)法(等價(jià)連續(xù)多個(gè)變換矩陣左乘)
matrix.rotate(Math.PI / 2).translate(10, 10);
// [pixi.js:Matrix a=1.8369701987210297e-16 b=3 c=-3 d=1.8369701987210297e-16 tx=10 ty=10]
// 上面這個(gè) a 應(yīng)該為 0,但因?yàn)楦↑c(diǎn)數(shù)誤差導(dǎo)致一個(gè)非常小的小數(shù)。

左乘、右乘、逆矩陣:

const leftMatrix = new Matrix();
const rightMatrix = new Matrix();

// 右乘
const newMatrix = leftMatrix.append(rightMatrix);

// 左乘
const newMatrix2 = rightMatrix.prepend(leftMatrix);

// 逆矩陣
const inverseMatrix = leftMatrix.invert();

計(jì)算點(diǎn)應(yīng)用矩陣后的結(jié)果、應(yīng)用逆矩陣的結(jié)果:

const matrix = new Matrix();

// 點(diǎn)應(yīng)用矩陣后的結(jié)果
const point = matrix.apply({ x: 100, y: 100 });

// 應(yīng)用逆矩陣的結(jié)果
const inversePoint = matrix.applyInverse({ x: 100, y: 100 });

Transform

Transform 是 Matrix 的等價(jià)表達(dá),但是對(duì)用戶(hù)友好。

The Transform class facilitates the manipulation of a 2D transformation matrix through user-friendly properties: position, scale, rotation, skew, and pivot.

Transform 是一些屬性的組合,可以表達(dá)一個(gè)圖形的任意形變效果。

屬性有:

  1. postion:位置,類(lèi)型為 point { x: number, y: number }。
  2. scale:縮放,類(lèi)型為 point。
  3. pivot:基準(zhǔn)位置,類(lèi)型為 point。它作為旋轉(zhuǎn)、縮放的中心點(diǎn),默認(rèn)為原點(diǎn)。
  4. skew:斜切,類(lèi)型為 point。弧度值,表示基向量方向和另一方向形成的角。
  5. rotation:旋轉(zhuǎn)角,弧度單位。

用 typescript 類(lèi)型表達(dá)為:

interface TransformableObject {
  position: PointData;
  scale: PointData;
  pivot: PointData;
  skew: PointData;
  rotation: number;
}

interface PointData {
  x: number;
  y: number;
}

pixijs 的圖形使用了 Transform 的這一套表達(dá),讓用戶(hù)能夠很簡(jiǎn)單直觀地表達(dá)一些簡(jiǎn)單的形變。

Transform 下有一個(gè) _matrix 屬性,維護(hù)等價(jià)的 matrix 對(duì)象,當(dāng) transform 的屬性更新時(shí),matrix 會(huì)標(biāo)記為 dirty,之后讀取的時(shí)候會(huì)重新生成。

transform 這個(gè)名字其實(shí)有點(diǎn)迷惑,因?yàn)橛袝r(shí)候我們也會(huì)把用在形變的矩陣 matrix,也叫做 transform。只是 pixijs 這里的命名比較特別,里面也有點(diǎn)亂。

下面看看 Matrix 和 Transform 之間的轉(zhuǎn)換算法。

Transform 轉(zhuǎn) Matrix

pixijs 中 Transform 轉(zhuǎn) Matrix 的實(shí)現(xiàn)如下。

class Transform {
    /**
     * This matrix is computed by combining this Transforms position, scale, rotation, skew, and pivot
     * properties into a single matrix.
     * @readonly
     */
    get matrix(): Matrix
    {
        const lt = this._matrix;

        if (!this.dirty) return lt;

        lt.a = this._cx * this.scale.x;
        lt.b = this._sx * this.scale.x;
        lt.c = this._cy * this.scale.y;
        lt.d = this._sy * this.scale.y;

        lt.tx = this.position.x - ((this.pivot.x * lt.a) + (this.pivot.y * lt.c));
        lt.ty = this.position.y - ((this.pivot.x * lt.b) + (this.pivot.y * lt.d));

        this.dirty = false;

        return lt;
    }
  
    /** Called when the skew or the rotation changes. */
    protected updateSkew(): void
    {
        this._cx = Math.cos(this._rotation + this.skew.y);
        this._sx = Math.sin(this._rotation + this.skew.y);
        this._cy = -Math.sin(this._rotation - this.skew.x); // cos, added PI/2
        this._sy = Math.cos(this._rotation - this.skew.x); // sin, added PI/2

        this.dirty = true;
    }
}

_cx、_sx、_cy、sy 會(huì)在更新 skew 或 rotataion 時(shí)進(jìn)行更新,是緩存數(shù)據(jù)。

我們抽出算法。

上面為了提高計(jì)算效率,沒(méi)有用矩陣類(lèi)的方法,這里給矩陣相乘表達(dá)。

import { Matrix } from 'pixi.js';

const transformToMatrix = (tf: TransformableObject) => {
  const cosX = Math.cos(tf.rotation + tf.skew.y);
  const sinX = Math.sin(tf.rotation + tf.skew.y);
  const cosY = -Math.sin(tf.rotation - tf.skew.x);
  const sinY = Math.cos(tf.rotation - tf.skew.x);

  const skewMatrix = new Matrix(cosX, sinX, cosY, sinY, 0, 0);

  return new Matrix()
    .translate(-tf.pivot.x, -tf.pivot.y)
    .prepend(skewMatrix)
    .scale(tf.scale.x, tf.scale.y)
    .translate(tf.position.x, tf.position.y);
};

斜切和旋轉(zhuǎn)二者需要合并為一個(gè)斜切矩陣。因?yàn)樾D(zhuǎn)本質(zhì)是一種斜切,只是剛好兩個(gè)斜切角的和為 360 度的倍數(shù)。

所以這里要把 skew 和 rotation 加起來(lái),計(jì)算一個(gè)斜切矩陣。

結(jié)果矩陣為下面幾個(gè)矩陣連續(xù)左乘:

  1. pivot 負(fù)方向的位移矩陣。表示圖形上的某個(gè)點(diǎn),移動(dòng)到坐標(biāo)原點(diǎn)。pivot 可以理解為前置版位移。
  2. skew 和 rotation 得到的斜切矩陣。
  3. scale 對(duì)應(yīng)的縮放矩陣。
  4. position 對(duì)應(yīng)的位移矩陣。

Matrix 轉(zhuǎn) Transform

pixi.js 的實(shí)現(xiàn)為:

class Matrix {
      /**
     * Decomposes the matrix (x, y, scaleX, scaleY, and rotation) and sets the properties on to a transform.
     * @param transform - The transform to apply the properties to.
     * @returns The transform with the newly applied properties
     */
    public decompose(transform: TransformableObject): TransformableObject
    {
        // sort out rotation / skew..
        const a = this.a;
        const b = this.b;
        const c = this.c;
        const d = this.d;
        const pivot = transform.pivot;

        const skewX = -Math.atan2(-c, d);
        const skewY = Math.atan2(b, a);

        const delta = Math.abs(skewX + skewY);

        if (delta < 0.00001 || Math.abs(PI_2 - delta) < 0.00001)
        {
            transform.rotation = skewY;
            transform.skew.x = transform.skew.y = 0;
        }
        else
        {
            transform.rotation = 0;
            transform.skew.x = skewX;
            transform.skew.y = skewY;
        }

        // next set scale
        transform.scale.x = Math.sqrt((a * a) + (b * b));
        transform.scale.y = Math.sqrt((c * c) + (d * d));

        // next set position
        transform.position.x = this.tx + ((pivot.x * a) + (pivot.y * c));
        transform.position.y = this.ty + ((pivot.x * b) + (pivot.y * d));

        return transform;
    }
}

上面這個(gè)是 matrix 對(duì)象的方法,接收一個(gè) transform 對(duì)象,修改它的值,并返回它自身。

pivot 這個(gè)就直接取傳入的 transform 的 pivot。

計(jì)算斜切值 skew。即求圖形兩條相鄰邊各自的余弦值對(duì)應(yīng)的角。

如果剛好兩個(gè)斜切角之和為 0 或 360 度,說(shuō)明是特殊的斜切——旋轉(zhuǎn),那就給 rotation 設(shè)置為 skewY。skew 設(shè)置為 0。

如果不是,rotation 設(shè)置為 0,skew 設(shè)置為斜切角。

scale 分別為 a 和 b、c 和 d 的平方和開(kāi)方。

最后是 position,理論上直接取 tx 和 ty 即可,不過(guò)有個(gè) pivot。pivot 是圖形斜切縮放前的前置位移,所以給它應(yīng)用去掉 tx 和 ty 的矩陣做一個(gè)運(yùn)算,然后再加上 tx 和 ty 即可。

結(jié)尾

矩陣 matrix 體現(xiàn)了數(shù)學(xué)的簡(jiǎn)潔之美,只用幾個(gè)數(shù)字,就能表達(dá)圖形的各種變換的組合。

但問(wèn)題是可讀性差,無(wú)法直接看出圖形的特性,比如旋轉(zhuǎn)了多少,縮放了多少。

為了提高易用性,pixijs 引入了一套和 matrix 等價(jià)的 transform,讓開(kāi)發(fā)者使用圖形時(shí),能夠快速上手,很好地解決了 Matrix 的弊端。

責(zé)任編輯:姜華 來(lái)源: 前端西瓜哥
相關(guān)推薦

2023-02-15 09:00:00

算法推薦系統(tǒng)矩陣分解算法

2017-02-08 09:25:16

Spark分解推薦

2023-01-08 23:06:14

css3d變換

2014-07-15 09:36:55

機(jī)器學(xué)習(xí)

2014-07-04 10:05:57

機(jī)器學(xué)習(xí)

2017-07-06 08:36:10

特征向量矩陣PCA

2022-10-24 15:56:55

PythonPyTorchGPU 計(jì)算

2025-01-24 08:34:29

pixijs圖形設(shè)置光標(biāo)cursor

2021-06-24 08:30:00

人工智能數(shù)據(jù)計(jì)算

2023-02-08 17:04:14

Python計(jì)算庫(kù)數(shù)學(xué)函數(shù)

2023-10-09 07:49:33

PixiJSWebGL

2025-06-23 00:03:00

2025-01-14 14:04:45

2021-07-14 06:40:02

矩陣路徑字符串

2023-10-13 07:29:23

PixiJSRunner

2023-02-28 07:28:50

Spritepixijs

2023-06-08 08:16:33

TickerPixiJS

2023-06-07 08:13:46

PixiJSCanvas 庫(kù)

2023-02-22 09:27:31

CanvasWebGL

2025-06-20 08:55:00

模型AI計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文字幕在线观看第二页| 中文精品在线观看| 欧美色图天堂| 久久综合五月天婷婷伊人| 国产ts一区二区| 国产成人精品视频免费| 91精品尤物| 在线观看免费视频综合| 男人天堂新网址| 欧美挠脚心网站| 国产精品夜夜嗨| 日本一本a高清免费不卡| 亚洲最大的黄色网址| 欧美巨大xxxx| 欧美福利一区二区| 久久久久久久久久久福利| 国产秀色在线www免费观看| 99精品1区2区| 91在线观看网站| 中文字幕人妻一区二区三区视频| 伊人久久亚洲影院| 久久久精品久久久| 亚洲国产日韩一区无码精品久久久| 日韩一区二区三区高清在线观看| 在线欧美日韩国产| 日韩国产欧美亚洲| 午夜av在线免费观看| 国产午夜精品一区二区三区视频| 成人黄动漫网站免费| 97人妻一区二区精品免费视频| 免费视频一区| 久久免费视频网| 免费一级黄色大片| 婷婷亚洲五月色综合| 亚洲天堂日韩电影| 中文字幕在线免费看线人| 视频精品一区二区三区| 51午夜精品国产| 亚洲精品久久久中文字幕| 欧美xx视频| 日韩欧美国产视频| 国产淫片免费看| 精精国产xxxx视频在线野外| 女生裸体视频一区二区三区| 欧美激情无毛| 日韩精品免费综合视频在线播放| 成人高清在线观看视频| 欧美97人人模人人爽人人喊视频| 色999日韩国产欧美一区二区| 阿v天堂2017| av中文字幕电影在线看| 亚洲国产日韩在线一区模特| 免费高清一区二区三区| 在线观看操人| 一个色综合av| 国产人妻777人伦精品hd| av在线网页| 精品成人在线视频| 国产青青在线视频| 国产美女高潮在线| 色综合久久久久综合| 欧美视频第一区| 欧美一区久久久| 91久久精品一区二区三| 丁香婷婷激情网| 国产精品天堂蜜av在线播放| 欧美日韩大陆一区二区| 91香蕉国产线在线观看| 亚洲一区电影| 亚洲精品国产精品乱码不99按摩| 国产三级视频网站| 欧美综合一区| 久久视频在线直播| 久久精品第一页| 夜夜精品视频| 国产精品日韩欧美综合| 国产一区二区三区成人| 极品少妇xxxx偷拍精品少妇| 99久久99久久精品国产片| 天堂在线观看视频| 国产亚洲一区二区三区在线观看| 欧美日韩在线观看一区二区三区| www.成人.com| 亚洲精品日产精品乱码不卡| 精品少妇在线视频| 欧美日韩女优| 精品久久久久久久人人人人传媒| 国产极品一区二区| 精品国产123区| 欧美成人全部免费| 成人精品免费在线观看| 另类综合日韩欧美亚洲| 超碰97在线资源| 国产美女视频一区二区三区 | 国产视频福利一区| www天堂在线| 久久久不卡影院| 国产女主播av| 欧美××××黑人××性爽| 91精品国产综合久久久久久久| 国产高清成人久久| 欧美电影《睫毛膏》| 97精品免费视频| 国产一区二区三区四区视频| 91在线观看地址| 精品91一区二区三区| 成人性生活视频| 欧美刺激午夜性久久久久久久| 亚洲av无码一区二区三区人 | www.亚洲人.com| 色婷婷av国产精品| 国产成人99久久亚洲综合精品| 明星裸体视频一区二区| 四季久久免费一区二区三区四区| 色菇凉天天综合网| 日批在线观看视频| 欧美激情1区2区3区| 日韩av观看网址| 日本免费不卡视频| 亚洲欧美一区二区三区孕妇| 999精品视频在线| 欧美午夜18电影| 欧美老女人性视频| 91禁在线观看| 日本一区免费视频| 欧美 国产 小说 另类| 99re8这里有精品热视频免费| 色婷婷成人综合| www.亚洲激情| 久久久青草青青国产亚洲免观| 日韩精品在线视频免费观看| 国产精品美女久久久久人| 中文字幕日韩av| 销魂美女一区二区| 26uuu精品一区二区| 亚洲人成无码网站久久99热国产| 欧美a级大片在线| 精品国模在线视频| 中文字幕在线播放不卡| 亚洲国产精品99久久久久久久久| 欧美精品色婷婷五月综合| 高潮久久久久久久久久久久久久 | 日本少妇在线观看| 国产成人小视频| 欧美日韩午夜爽爽| 玖玖玖视频精品| 久久99精品久久久久久琪琪| 国产日本精品视频| 亚洲美女一区二区三区| www.夜夜爽| 亚洲国产精品91| 2022国产精品| 黄色羞羞视频在线观看| 精品国产免费一区二区三区四区 | 国产写真视频在线观看| 在线综合亚洲欧美在线视频| 国产精品免费人成网站酒店| 国产一区欧美一区| 高清无码视频直接看| ccyy激情综合| 欧美综合一区第一页| 国产一二在线观看| 欧美天天综合网| 三级黄色在线观看| 国产精品资源网| r级无码视频在线观看| 欧美一区自拍| 国产精品久久97| 黄色精品免费看| 精品毛片乱码1区2区3区| 1级黄色大片儿| 久久久夜色精品亚洲| 9久久婷婷国产综合精品性色 | 69堂免费视频| 欧美手机在线| 91免费看网站| 欧美办公室脚交xxxx| 在线观看国产精品91| 国产精品一级视频| 午夜精品久久久久久久久久| 国产 欧美 在线| 国产精品一区二区久久不卡| 免费在线观看亚洲视频| 国产一区二区三区探花| 成人中心免费视频| ****av在线网毛片| 中文字幕日韩精品有码视频| 国产黄色一级大片| 欧美性猛交xxxx偷拍洗澡| 老司机深夜福利网站| 大白屁股一区二区视频| youjizzxxxx18| 欧美午夜久久| 神马影院一区二区| 草莓视频一区二区三区| 国产精品成人av在线| gogogogo高清视频在线| 亚洲欧美中文日韩在线| 国产suv一区二区| 91成人看片片| 一区二区三区免费高清视频| 国产精品免费久久久久| 国产精品无码毛片| 国产一区二区精品久久91| 国产欧美在线一区| 欧美先锋影音| 伊人色综合久久天天五月婷| 任你弄精品视频免费观看| 91亚洲精品在线观看| 日韩视频网站在线观看| 欧美精品久久久久久久久久| 午夜免费福利在线观看| 日韩精品在线观看一区| 亚洲AV午夜精品| 欧美美女视频在线观看| av一级在线观看| 午夜精品成人在线视频| 无码黑人精品一区二区| 中文av一区二区| 成人免费网站黄| 成人h动漫精品一区二| 精产国品一二三区| 老司机免费视频一区二区三区| www黄色av| 91久久夜色精品国产九色| 成人性做爰片免费视频| 成人女性视频| 日韩精品一区二区三区四区五区 | 久久av日韩| 欧美在线视频a| 麻豆网站免费在线观看| 久久久久国色av免费观看性色 | 大胆日韩av| 欧美久久久久久久| 麻豆一区二区麻豆免费观看| 99国产在线视频| 国产精品欧美一区二区三区不卡| 国产主播欧美精品| 久久国产三级| 国产精品一区二区女厕厕| 欧美日韩不卡| 国产精品com| av在线不卡精品| 国产精品成人一区二区三区吃奶 | 91福利视频久久久久| 波多野结衣 久久| 日韩欧美在线免费观看| 亚洲 欧美 成人| 日本道免费精品一区二区三区| 影音先锋亚洲天堂| 欧美性xxxx极品hd满灌| 国产寡妇亲子伦一区二区三区四区| 精品国产成人av| aaaaaa毛片| 欧美私人免费视频| 91九色蝌蚪91por成人| 4438x亚洲最大成人网| 国产精品视频a| 精品人在线二区三区| 二区三区在线视频| 日韩精品免费在线视频观看| 国内在线免费高清视频| 中文字幕日韩av电影| 国产原创视频在线观看| 欧美人与性动交| 涩涩av在线| 国产激情综合五月久久| 欧美综合影院| 电影午夜精品一区二区三区| 好吊妞视频这里有精品| 欧美日韩在线播放一区二区| 久久视频精品| 免费拍拍拍网站| 午夜亚洲精品| 亚洲一二三av| 成人99免费视频| 人妻精品久久久久中文| 亚洲天堂免费在线观看视频| 黄色小视频在线免费看| 日韩欧美在线视频观看| 国产精品无码白浆高潮| 亚洲国产另类 国产精品国产免费| 免费毛片在线| 日韩视频免费看| av男人的天堂在线观看| 国产精品久久久久福利| 日韩在线观看中文字幕| 欧美三级网色| 国产精品二区影院| 日本成年人网址| 国产九九视频一区二区三区| 久久精品成人av| 一区二区三区精品视频在线| 一级片视频在线观看| 日韩一区二区三区电影在线观看| 视频一区二区在线播放| 中文字幕日韩高清| 极品美鲍一区| 亚洲最大的av网站| 国产亚洲一区| 国产免费一区二区视频| 久久国产乱子精品免费女| 小毛片在线观看| 亚洲欧美另类小说视频| 五月激情丁香网| 亚洲国产欧美久久| 黄色网址在线免费| 国产成人一区二区三区| 国产精品xxxav免费视频| 一区二区三区av在线| 免费精品视频| 国产午夜在线一区二区三区| 成人欧美一区二区三区小说 | 亚洲第一区第二区| 日本蜜桃在线观看| 国产精品91久久| 日韩母乳在线| 777av视频| 国产精品18久久久久久vr| 欧美88888| 一本一道久久a久久精品综合蜜臀| 亚洲精品一区二区三区新线路| 日韩中文字幕免费看| 欧美电影网址| 美女黄毛**国产精品啪啪| 激情久久中文字幕| 日本一二三四区视频| 国产精品久久久久四虎| 成人免费一级片| 亚洲色图狂野欧美| 成人性生交大片免费观看网站| 精品欧美日韩在线| 亚洲承认在线| 妖精视频一区二区| 一区二区三区在线高清| 国产成人精品一区二三区四区五区 | 色狠狠色狠狠综合| 日本天堂在线| 日本精品va在线观看| 亚洲电影男人天堂| 亚洲午夜精品久久久久久人妖| 99在线精品观看| 免费看日韩毛片| 日韩成人在线视频| 色戒汤唯在线观看| 欧美xxxx黑人又粗又长密月| 久久av在线| 亚洲午夜久久久久久久国产| 欧美午夜一区二区三区| 1024国产在线| 成人做爰www免费看视频网站| 亚洲激情中文| 久久久久亚洲av无码专区首jn| 亚洲在线视频网站| 欧美自拍第一页| 992tv成人免费影院| 亚洲精品亚洲人成在线观看| 亚洲色精品三区二区一区| 国产日韩欧美亚洲| 91精品国产色综合久久不8| 久久中国妇女中文字幕| 136导航精品福利| 久久久久久久久久久视频| 91麻豆swag| 夜夜狠狠擅视频| 九九精品视频在线观看| 国产精品欧美大片| 日韩欧美xxxx| √…a在线天堂一区| 丰满人妻av一区二区三区| 91精品国产自产91精品| 欧美日韩性在线观看| 99久久99精品| 精品女同一区二区三区在线播放| 黄色在线网站| 91免费看国产| 国产精品老牛| 中文字幕观看av| 日韩精品极品视频| 91精品国产66| 日本手机在线视频| 国产精品网友自拍| 成人久久久精品国产乱码一区二区| 17婷婷久久www| 91九色精品| 99久久人妻无码中文字幕系列| 欧美撒尿777hd撒尿| 日本高清成人vr专区| 日本高清不卡一区二区三| 国产一区二区影院| 欧美h在线观看| 美女视频黄免费的亚洲男人天堂| 色天下一区二区三区| www激情五月| 色狠狠综合天天综合综合| av网址在线播放| 视频一区视频二区视频三区视频四区国产| 精品一区二区精品| 国内自拍视频在线播放| 久久国产精品99国产精|