精品欧美一区二区三区在线观看 _久久久久国色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)

欧美激情精品在线| 日韩精品影片| 9l亚洲国产成人精品一区二三 | 97国产精品免费视频| 日本黄大片一区二区三区| 精品小视频在线观看| 亚洲三级电影| 欧美国产日韩a欧美在线观看| 久久人人爽人人| 91蝌蚪视频在线| 精品国产丝袜高跟鞋| 少妇一区二区视频| 五月天一区二区| 97视频在线播放| 99久久99久久精品免费看小说.| 成人性生交大片免费看网站| 国模大尺度一区二区三区| 尤物九九久久国产精品的分类| 日本精品一区二区三区四区 | 美女网站久久| 日韩成人黄色av| 阿v天堂2017| 丰满人妻一区二区| 国内精品久久久久久久97牛牛| 91精品欧美福利在线观看| 一本一本a久久| 国产精品久久久国产盗摄| 99视频精品全部免费在线视频| 欧美日韩在线播放一区| 自拍偷拍亚洲色图欧美| 国产黄色av网站| 亚洲人www| 亚洲毛片在线免费观看| av免费中文字幕| 欧美日韩经典丝袜| av男人天堂一区| 欧美一级大胆视频| 一区二区三区在线观看免费视频| 在线日本欧美| 欧美日韩亚洲一区二区三区| 欧美日产一区二区三区在线观看| 日韩电影在线观看一区二区| 人人狠狠综合久久亚洲婷婷| 欧美日本在线播放| 少妇大叫太大太粗太爽了a片小说| 成人小说亚洲一区二区三区 | 一区av在线播放| 懂色av一区二区三区在线播放| 强行糟蹋人妻hd中文| 国产精品一区二区三区美女| 黑人精品xxx一区一二区| 宅男一区二区三区| av天在线观看| 成人午夜激情视频| 国产精品久久久久久久久久免费| 男人的午夜天堂| 成人看片爽爽爽| 亚洲精品一区二区三区蜜桃下载 | 精品三级久久| 中文字幕精品三区| 日本最新一区二区三区视频观看| 一女二男一黄一片| 黄色成人在线网站| 欧美激情精品久久久| 久久亚洲成人av| 亚洲特色特黄| 2020久久国产精品| 中文字幕在线观看视频免费| 首页综合国产亚洲丝袜| 久久精品国产成人精品| 色婷婷精品久久二区二区密| 成人在线免费电影网站| 亚洲18女电影在线观看| 在线一区日本视频| av毛片在线免费| 中文字幕不卡的av| 一区不卡字幕| 怡红院在线播放| 五月激情综合婷婷| 亚洲 欧美 日韩系列| bl在线肉h视频大尺度| 国产精品理论在线观看| 久精品国产欧美| 国产suv精品一区二区69| 国产成人精品免费| 国产精品视频成人| 欧美 日韩 精品| 亚洲午夜极品| 欧美最猛性xxxxx(亚洲精品)| 人妻人人澡人人添人人爽| 久久最新网址| 久久香蕉国产线看观看av| 一区二区三区四区免费| 精品少妇一区| 精品精品国产高清一毛片一天堂| 无尽裸体动漫2d在线观看| 性欧美超级视频| 同产精品九九九| 污版视频在线观看| 国产精品午夜av| 日韩在线观看免费网站| 妖精视频在线观看免费| 欧美婷婷在线| 九九热r在线视频精品| 婷婷激情四射网| 99久久99热这里只有精品| 欧美大片免费看| 午夜一区二区三区四区| 丝袜亚洲另类欧美综合| 91在线视频精品| 国产精品无码在线播放| av资源站一区| 三年中文高清在线观看第6集| 川上优的av在线一区二区| 国产网站一区二区| 视频一区二区综合| 国产视频二区在线观看| 久久久精品天堂| 日韩福利二区| a'aaa级片在线观看| 欧美三级乱人伦电影| 国产chinese中国hdxxxx| 国产精品国产一区| 国产精品18久久久久久麻辣| www.久久久久久久| 国产mv日韩mv欧美| 中文字幕在线亚洲精品| 午夜精品久久久久久久久久蜜桃| 日韩精品一区二区三区中文不卡| 亚洲少妇一区二区| 国产调教精品| 不卡毛片在线看| 色婷婷久久综合中文久久蜜桃av| 日韩av一区二区三区四区| 国产精品综合久久久| 99国产精品欲| 99这里只有精品| 996这里只有精品| 精品极品在线| 亚洲国产高清自拍| 国产精品天天干| 亚洲专区一区| 成人久久一区二区| 免费国产黄色片| 国产亚洲欧美色| 国产肥臀一区二区福利视频| 日韩在线影院| 日韩成人网免费视频| 国产污片在线观看| 日韩电影一区二区三区| 亚洲综合视频1区| 三级黄视频在线观看| 国产精品美女久久久久久久久| 国产精品欧美激情在线观看| 久久狠狠久久| 欧美专区在线视频| 精品亚洲综合| 一区二区三区蜜桃| 好吊操视频这里只有精品| 欧美日韩1080p| 国产精品久久久久久久久久久久午夜片| 天堂a中文在线| 亚洲视频 欧洲视频| 精品视频在线观看一区| 久久久久黄色| 精品视频在线播放| 毛片a片免费观看| 日韩 欧美一区二区三区| 日本一区二区高清视频| aa级大片免费在线观看| 亚洲国产三级网| 国产高潮流白浆| 国产成人午夜视频| 亚洲精品成人a8198a| 毛片在线网站| 日韩精品中午字幕| 日本在线视频免费观看| 国产曰批免费观看久久久| 日本一区视频在线播放| 福利视频亚洲| 欧美不卡视频一区发布| 男人天堂视频网| 亚洲欧洲三级电影| 国产一二三四在线视频| 天堂网av成人| 午夜精品国产精品大乳美女| 麻豆影视在线| 色综合久久久久综合体 | 成人丝袜高跟foot| 欧洲av无码放荡人妇网站| 国产精品97| 精品国产电影| 日韩精品卡一| 欧美一区二区性放荡片| 日本污视频网站| 日韩精品电影在线观看| 黄色a级在线观看| 欧美日韩直播| 97在线精品国自产拍中文| 国产色a在线| 精品国产乱码久久久久久牛牛 | 欧美日韩国产123区| 久久久久性色av无码一区二区| 久久综合av免费| 国产精品久久中文字幕| 欧美韩日一区| 成人欧美在线视频| 综合久久2023| 亚洲日韩欧美视频| 艳妇乳肉豪妇荡乳av无码福利| 亚洲精品国产a久久久久久| 国产一级二级av| 亚洲人metart人体| 亚洲精品免费一区二区三区| 台湾佬中文娱乐网欧美电影| 亚洲精品v欧美精品v日韩精品| 黄色污污视频软件| 亚洲18色成人| 久久国产精品二区| 《视频一区视频二区| 一级做a爰片毛片| 老牛影视一区二区三区| 国产在线视频在线| 91精品电影| 91一区二区三区| 成人免费图片免费观看| 久久艳片www.17c.com| 国模精品一区二区| 日韩精品在线观| 色欲久久久天天天综合网| 精品国产电影一区| 国产亚洲色婷婷久久99精品| 日韩毛片在线免费观看| 人人爽人人爽人人片| 久久综合久久久久88| 黄色av网址在线观看| 免费欧美日韩| 国产精品无码人妻一区二区在线 | 久久久91精品国产一区二区精品| 欧洲熟妇的性久久久久久| 99国产精品久久久久久久成人热| 久久久久久艹| 欧美a大片欧美片| 久久99精品久久久久久水蜜桃| 91成人精品在线| 91福利视频网| 欧美激情二区| 亚洲国内精品视频| 黄色小视频免费观看| 精品裸体舞一区二区三区| 精品毛片在线观看| 色哟哟国产精品免费观看| 欧美一区二区三区四| 中文字幕在线不卡| 特大黑人巨人吊xxxx| 99久久精品免费观看| 手机av在线网| 国产一区二区三区四区五区美女| 欧美激情国内自拍| 先锋亚洲精品| 欧美精品一区二区三区免费播放| 亚洲一级淫片| 久久香蕉视频网站| 亚洲大胆在线| 一区二区三区日韩视频| 91精品婷婷色在线观看| 一二三四中文字幕| 欧美午夜精品一区二区三区电影| 日韩国产精品一区二区| 久久高清精品| 免费av在线一区二区| 日韩精品一区国产| 国产精品视频1区| 91精品福利观看| 国产伦精品一区二区三区视频免费| 青青久久av| 亚洲日本无吗高清不卡| 欧美福利一区| 男人j进女人j| 伊人久久亚洲热| 国产天堂在线播放| 国产情侣一区| 草b视频在线观看| 中文字幕一区二区三区在线视频| 日韩黄色片在线| 国产一在线精品一区在线观看| 青青艹视频在线| 亚洲茄子视频| 男女爽爽爽视频| 国产精品一区二区三区99 | 国产一区二区免费看| youjizz.com国产| 国产麻豆成人传媒免费观看| 图片区偷拍区小说区| 国产女同互慰高潮91漫画| 波多野结衣一本| 99久久国产免费看| 国产成人在线网址| 中文字幕乱码日本亚洲一区二区| 国产激情无码一区二区三区| 亚洲成人动漫av| 日本亚洲色大成网站www久久| 一本到一区二区三区| 99er热精品视频| 国产一区二区三区欧美| 国产青青草在线| 欧美激情国产精品| 偷拍自拍亚洲| 91亚洲永久免费精品| 国产精品久久久网站| 亚洲一区二区三区色| 国产农村妇女精品一二区| 亚洲一区二区图片| 国产成人精品免费网站| 国产馆在线观看| 欧美香蕉大胸在线视频观看| 91精品国产综合久久久蜜臀九色| 欧美群妇大交群中文字幕| 天堂在线中文| 欧美激情乱人伦| 嫩呦国产一区二区三区av | 欧洲精品一区| 国产一级片91| 国内外成人在线视频| 亚洲无人区码一码二码三码的含义| 亚洲国产日韩av| 国产高清免费在线观看| 日韩有码在线播放| caoporn免费在线视频| 久久99久久99精品免观看粉嫩| 国产精品毛片久久久久久久久久99999999 | 在线成人av影院| 精品国产九九九| 色婷婷综合成人| 成人在线黄色| 奇米精品在线| 免费精品视频| 毛茸茸多毛bbb毛多视频| 亚洲成人7777| 手机看片福利永久| 91av视频在线播放| 粉嫩av一区二区| 亚洲一区二区三区av无码| 国产成人精品一区二区三区四区| 男人操女人的视频网站| 欧美一区二区三区免费| 18videosex性欧美麻豆| 成人国产1314www色视频| 亚洲第一二三区| 三年中国中文在线观看免费播放| 日本特黄久久久高潮 | 亚洲色图.com| 99热这里是精品| 欧美多人爱爱视频网站| 盗摄系列偷拍视频精品tp| 欧美黑人在线观看| 99久久99久久精品免费观看| 日韩无码精品一区二区三区| 欧美天堂亚洲电影院在线播放| 国内毛片毛片毛片毛片| 久久福利网址导航| 91精品国产自产精品男人的天堂| 97超碰国产精品| 99国产欧美另类久久久精品| wwwwww国产| 在线日韩欧美视频| 国产精品一区免费在线| 欧美日韩一区二区视频在线 | 欧美呦呦网站| 欧美一级xxxx| 亚洲一区二区三区免费视频| 最近中文字幕在线观看| 少妇高潮久久久久久潘金莲| 日日夜夜精品| 成人免费网站入口| www亚洲一区| 国产一卡二卡在线播放| 日韩av一区在线观看| 高清av一区二区三区| 久久久无码中文字幕久...| 成人av网站在线| 欧美成人精品欧美一级私黄| 精品欧美一区二区在线观看 | 色综合久久久久久久| 伊人在线视频| 日本在线观看天堂男亚洲| 97久久亚洲| 白嫩少妇丰满一区二区| 18成人在线观看| 天堂91在线| 91精品久久久久久久久久久久久久| 国产成人1区| 日韩黄色片视频| 综合欧美一区二区三区| 日本加勒比一区| 成人av资源在线播放| 亚洲美洲欧洲综合国产一区| 欧美乱大交做爰xxxⅹ小说| 精品久久免费看| 久久精品国产福利|