亚洲动漫在线观看-亚洲动漫第一页-亚洲丁香婷婷-亚洲丶国产丶欧美一区二区三区-亚洲第一综合网站-亚洲第一永久色

顯示源代碼
可視域分析
 開發文檔
            <!DOCTYPE html>

<html>
<head>
    <meta charset='UTF-8'/>
    <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no'/>
    <link  rel='stylesheet'/>
    <script src='http://ua.bigemap.com:30081/bmsdk/bigemap-gl.js/v1.1.0/bigemap-gl.js'></script>
    <style>
        body {
            margin: 0;
            padding: 0;
        }
        #container {
            position: absolute;
            top: 0;
            bottom: 0;
            width: 100%;
        }
        .info{
            position: absolute;
            top:0;
            left: 0;
            right: 0;
            z-index: 9;
            text-align: center;
            height: 30px;
            line-height: 30px;
            color: #909399;
            background: #f4f4f5;
        }
    </style>
    <title>part_test</title>
</head>
<body>
    <div class="info">
    點擊地圖可以獲取當前位置的可視域分析(藍色表示可見,紅色不為可見)
</div>
<div id='container'></div>
<script>
    bmgl.Config.HTTP_URL = 'http://ua.bigemap.com:30081/bmsdk/';
    var viewer = new bmgl.Viewer('container', {mapId: 'bigemap.dc-satellite',requestRenderMode:false,terrainId: 'bigemap.dc-terrain'});
    //設置初始位置
    viewer.camera.setView({
        destination: bmgl.Cartesian3.fromDegrees(103.59526245619938,30.9814012061604,3837.4144546),
        orientation: {"heading":6.282150327905171,"roll":6.279635689524259,"pitch":-0.6993902253931052}
    });
    //當前的視點坐標
    var startPoint={
        lng:103.5898409037154,
        lat:31.012823472619534
    };
    var clickAble=true;
    viewer.screenSpaceEventHandler.setInputAction(function (e) {
        var ray=viewer.camera.getPickRay(e.position);
        var c=viewer.scene.globe.pick(ray,viewer.scene);
        if (!clickAble||!bmgl.defined(c))return;
        clickAble=false;
        setTimeout(()=>{
            clickAble=true;
        },1000);
        c=bmgl.Cartographic.fromCartesian(c);
        startPoint.lng=bmgl.Math.toDegrees(c.longitude)
        startPoint.lat=bmgl.Math.toDegrees(c.latitude);
        drawLine();
    },bmgl.ScreenSpaceEventType.LEFT_CLICK);
    var pointArr=[];
    viewer.scene.globe.depthTestAgainstTerrain=true;
    setTimeout(function () {
        //1秒后開始畫視角
        drawLine();
    },1000);
    function drawLine() {
        pointArr.map(v=>v.remove());
        pointArr.length=0;
        var viewHeight = 1.5;//視角高度
        var cartographicCenter = bmgl.Cartographic.fromDegrees(startPoint.lng, startPoint.lat);
        var cartesianCenterH0 = bmgl.Cartesian3.fromRadians(cartographicCenter.longitude, cartographicCenter.latitude);
        var cartesianPointH0 = bmgl.Cartesian3.fromDegrees(startPoint.lng+0.02, startPoint.lat+0.01);
        var ab = bmgl.Cartesian3.distance(cartesianCenterH0, cartesianPointH0);
        var eopt = {};
        eopt.semiMinorAxis = ab;
        eopt.semiMajorAxis = ab;
        eopt.rotation = 0;
        eopt.center = cartesianCenterH0;
        eopt.granularity = Math.PI / 20;//間隔
        var ellipse = computeEllipseEdgePositions(eopt);
        for (var i = 0; i < ellipse.outerPositions.length; i += 3) {
            //逐條計算可視域
            var cartesian = new bmgl.Cartesian3(ellipse.outerPositions[i], ellipse.outerPositions[i + 1], ellipse.outerPositions[i + 2]);
            var cartographic = bmgl.Cartographic.fromCartesian(cartesian);
            var deltaRadian = 0.00005 * Math.PI / 180.0;
            var cartographicArr = InterpolateLineCartographic(cartographicCenter, cartographic, deltaRadian);
            getTerrain(cartographicArr,terrainData=>{
                try {
                    if (terrainData.length > 0) {
                        var preVisible = true;
                        var cartesiansLine = [];
                        var colors = [];
                        for (var j = 1; j < terrainData.length; j++) {
                            //逐點計算可見性
                            var visible = true;//該點可見性
                            if (j > 1) {
                                var cartographicCenterHV = new bmgl.Cartographic(terrainData[0].longitude, terrainData[0].latitude, terrainData[0].height + viewHeight);
                                //
                                if (preVisible) {
                                    //
                                    var curPoint = InterpolateIndexLineHeightCartographic(cartographicCenterHV, terrainData[j], j, j - 1);
                                    if (curPoint.height >= terrainData[j - 1].height) {
                                        preVisible = true;
                                        visible = true;
                                    } else {
                                        preVisible = false;
                                        visible = false;
                                    }
                                } else {
                                    //插值到當前
                                    var curPointArr = Interpolate2IndexLineHeightCartographic(cartographicCenterHV, terrainData[j], j, j - 1);
                                    for (var k = 0; k < curPointArr.length; k++) {
                                        if (curPointArr[k].height >= terrainData[k].height) {
                                            preVisible = true;
                                            visible = true;
                                        } else {
                                            preVisible = false;
                                            visible = false;
                                            break;
                                        }
                                    }
                                }
                            }
                            var cartesianTemp = bmgl.Cartesian3.fromRadians(terrainData[j].longitude, terrainData[j].latitude, terrainData[j].height + 0.10);
                            cartesiansLine.push(cartesianTemp);
                            //繪制點
                            if (visible) {
                                colors.push(0);
                                colors.push(0);
                                colors.push(1);
                                colors.push(1);
                            } else {
                                colors.push(1);
                                colors.push(0);
                                colors.push(0);
                                colors.push(1);
                            }
                        }
                        //繪制結果
                        var pointsKSY = new PrimitivePoints({ 'viewer': viewer, 'Cartesians': cartesiansLine, 'Colors': colors });
                        pointArr.push(pointsKSY);
                    } else {
                        console.log("高程異常!");
                    }
                }catch (e) {
                    console.log(e);
                }
            })
        }
    }


    function getTerrain(arr,callback) {
        bmgl.sampleTerrainMostDetailed(viewer.terrainProvider,arr).then(data=>{
            callback(data);
        })
    }

    /**
     * options.semiMinorAxis:短半軸
     * options.semiMajorAxis:長半軸
     * options.rotation:旋轉角度 弧度
     * options.center:中心點 笛卡爾坐標
     * options.granularity:粒度 弧度
     * Returns an array of positions that make up the ellipse.
     * @private
     */
    function  computeEllipseEdgePositions(options) {
        var unitPosScratch = new bmgl.Cartesian3();
        var eastVecScratch = new bmgl.Cartesian3();
        var northVecScratch = new bmgl.Cartesian3();
        var scratchCartesian1 = new bmgl.Cartesian3();
        var semiMinorAxis = options.semiMinorAxis;
        var semiMajorAxis = options.semiMajorAxis;
        var rotation = options.rotation;//法線
        var center = options.center;
        var granularity = options.granularity && (typeof options.granularity === "number") ? options.granularity : (Math.PI / 180.0);// 角度間隔
        if (granularity > Math.PI / 12.0) { granularity = Math.PI / 12.0; }//最小分24
        if (granularity < Math.PI / 180.0) { granularity = Math.PI / 180.0; }//最大分360
        var aSqr = semiMinorAxis * semiMinorAxis;
        var bSqr = semiMajorAxis * semiMajorAxis;
        var ab = semiMajorAxis * semiMinorAxis;
        var mag = bmgl.Cartesian3.magnitude(center);//
        var unitPos = bmgl.Cartesian3.normalize(center, unitPosScratch);
        var eastVec = bmgl.Cartesian3.cross(bmgl.Cartesian3.UNIT_Z, center, eastVecScratch);
        eastVec = bmgl.Cartesian3.normalize(eastVec, eastVec);
        var northVec = bmgl.Cartesian3.cross(unitPos, eastVec, northVecScratch);
        var numPts = Math.ceil(bmgl.Math.PI*2 / granularity);
        var deltaTheta = granularity;
        var theta = 0;

        var position = scratchCartesian1;
        var i;
        var outerIndex = 0;
        var outerPositions = [];
        for (i = 0; i < numPts; i++) {
            theta = i * deltaTheta;
            position = pointOnEllipsoid(theta, rotation, northVec, eastVec, aSqr, ab, bSqr, mag, unitPos, position);

            outerPositions[outerIndex++] = position.x;
            outerPositions[outerIndex++] = position.y;
            outerPositions[outerIndex++] = position.z;
        }

        var r = {};
        r.numPts = numPts;
        r.outerPositions = outerPositions;
        return r;
    };
    /*
        線段插值
        經緯度坐標插值
        Cartographic start.longitude start.latitude 單位:弧度
        return [Cartographic,...]
        */
     function InterpolateLineCartographic(start, end, _Delta) {
        if (start && end) { } else { return null; }
        if (start.longitude && start.latitude && end.longitude && end.latitude) { } else { return null; }
        var result = [];
        //開始點
        result.push(new bmgl.Cartographic(start.longitude, start.latitude));
        var interval = Math.sqrt(Math.pow((end.longitude - start.longitude), 2) + Math.pow((end.latitude - start.latitude), 2));
        var delta = _Delta && (typeof _Delta === 'number') ? _Delta : DeltaRadian;
        if (interval <= delta) {
            //小于最小間隔
            result.push(new bmgl.Cartographic(end.longitude, end.latitude));
            return result;
        } else {
            var num = interval / delta;
            var stepLon = (end.longitude - start.longitude) / num;
            var stepLat = (end.latitude - start.latitude) / num;
            for (var i = 0; i < num; i++) {
                var lon = start.longitude + (i + 1) * stepLon;
                var lat = start.latitude + (i + 1) * stepLat;
                result.push(new bmgl.Cartographic(lon, lat));//與最后一個點有偏差
            }
            result.push(new bmgl.Cartographic(end.longitude, end.latitude, end.height));
        }
        return result;
    }
    function InterpolateIndexLineHeightCartographic(start, end, num, index) {
        if (start && end) { } else { return null; }
        if (start.longitude && start.latitude && end.longitude && end.latitude) { } else { return null; }
        //var delta = _Delta && (typeof _Delta === 'number') ? _Delta : DeltaRadian;
        var stepLon = (end.longitude - start.longitude) / num;
        var stepLat = (end.latitude - start.latitude) / num;
        var stepHeight = (end.height - start.height) / num;
        var lon = start.longitude + index * stepLon;
        var lat = start.latitude + index * stepLat;
        var hieght = start.height + index * stepHeight;
        var result = new bmgl.Cartographic(lon, lat, hieght);
        return result;
    }
    
    /*
       線段插值
       經緯度高程插值
       Cartographic start.longitude start.latitude 單位:弧度 start.height 高程單位m
       num:分總段數  傳入數組長度-1
       index:獲取到第index點的所有插值 0點是開始點
       return [Cartographic,...]
       */
    function Interpolate2IndexLineHeightCartographic(start, end, num, curIndex) {
        if (start && end) { } else { return null; }
        if (start.longitude && start.latitude && end.longitude && end.latitude) { } else { return null; }
        var result = [];
        result.push(new bmgl.Cartographic(start.longitude, start.latitude, start.height));
        var stepLon = (end.longitude - start.longitude) / num;
        var stepLat = (end.latitude - start.latitude) / num;
        var stepHeight = (end.height - start.height) / num;
        for (var i = 0; i < curIndex; i++) {
            var lon = start.longitude + (i + 1) * stepLon;
            var lat = start.latitude + (i + 1) * stepLat;
            var hieght = start.height + (i + 1) * stepHeight;
            result.push(new bmgl.Cartographic(lon, lat, hieght));
        }
        //result.push(new bmgl.Cartographic(end.longitude, end.latitude, end.height));
        return result;
    }
    function pointOnEllipsoid(theta, rotation, northVec, eastVec, aSqr, ab, bSqr, mag, unitPos, result) {
        var rotAxis = new bmgl.Cartesian3();
        var tempVec = new bmgl.Cartesian3();
        var unitQuat = new bmgl.Quaternion();
        var rotMtx = new bmgl.Matrix3();

        var azimuth = theta + rotation;

        bmgl.Cartesian3.multiplyByScalar(eastVec, Math.cos(azimuth), rotAxis);
        bmgl.Cartesian3.multiplyByScalar(northVec, Math.sin(azimuth), tempVec);
        bmgl.Cartesian3.add(rotAxis, tempVec, rotAxis);

        var cosThetaSquared = Math.cos(theta);
        cosThetaSquared = cosThetaSquared * cosThetaSquared;

        var sinThetaSquared = Math.sin(theta);
        sinThetaSquared = sinThetaSquared * sinThetaSquared;

        var radius = ab / Math.sqrt(bSqr * cosThetaSquared + aSqr * sinThetaSquared);
        var angle = radius / mag;

        // Create the quaternion to rotate the position vector to the boundary of the ellipse.
        bmgl.Quaternion.fromAxisAngle(rotAxis, angle, unitQuat);
        bmgl.Matrix3.fromQuaternion(unitQuat, rotMtx);

        bmgl.Matrix3.multiplyByVector(rotMtx, unitPos, result);
        bmgl.Cartesian3.normalize(result, result);
        bmgl.Cartesian3.multiplyByScalar(result, mag, result);
        return result;
    }

    var PrimitivePoints = (
        function () {
            var vertexShader;
            var fragmentShader;
            var geometry;
            var appearance;
            var viewer;
            function _(options) {
                viewer = options.viewer;
                vertexShader = VSPolylie();
                fragmentShader = FSPolyline();
                if (options.Cartesians && options.Cartesians.length >= 2) {
                    var postionsTemp = [];
                    var colorsTemp = [];
                    var indicesTesm = [];
                    if (options.Colors && options.Colors.length === options.Cartesians.length * 4) {
                        for (var i = 0; i < options.Cartesians.length; i++) {
                            postionsTemp.push(options.Cartesians[i].x);
                            postionsTemp.push(options.Cartesians[i].y);
                            postionsTemp.push(options.Cartesians[i].z);
                        }
                        colorsTemp = options.Colors;
                    } else {
                        for (var i = 0; i < options.Cartesians.length; i++) {
                            postionsTemp.push(options.Cartesians[i].x);
                            postionsTemp.push(options.Cartesians[i].y);
                            postionsTemp.push(options.Cartesians[i].z);
                            //
                            colorsTemp.push(0.0);
                            colorsTemp.push(0.0);
                            colorsTemp.push(1.0);
                            colorsTemp.push(1.0);
                        }
                    }
                    for (var i = 0; i < options.Cartesians.length; i++) {
                        indicesTesm.push(i);
                    }
                    this.positionArr = new Float64Array(postionsTemp);
                    this.colorArr = new Float32Array(colorsTemp);
                    this.indiceArr = new Uint16Array(indicesTesm);

                } else { // if (options.Cartesians && options.Cartesians.length >= 2) {
                    var p1 = bmgl.Cartesian3.fromDegrees(0, 0, -10);
                    var p2 = bmgl.Cartesian3.fromDegrees(0, 0.001, -10);
                    this.positionArr = new Float64Array([
                        p1.x, p1.y, p1.z,
                        p2.x, p2.y, p2.z
                    ]);
                    //默認藍色
                    this.colorArr = new Float32Array([
                        0.0, 0.0, 1.0, 1.0,
                        0.0, 0.0, 1.0, 1.0
                    ]);
                    this.indiceArr = new Uint16Array([0, 1]);
                }

                geometry = CreateGeometry(this.positionArr, this.colorArr, this.indiceArr);
                appearance = CreateAppearence(fragmentShader, vertexShader);

                this.primitive = viewer.scene.primitives.add(new bmgl.Primitive({
                    geometryInstances: new bmgl.GeometryInstance({
                        geometry: geometry
                    }),
                    appearance: appearance,
                    asynchronous: false
                }));
            }

            function CreateGeometry(positions, colors, indices) {
                return new bmgl.Geometry({
                    attributes: {
                        position: new bmgl.GeometryAttribute({
                            componentDatatype: bmgl.ComponentDatatype.DOUBLE,
                            componentsPerAttribute: 3,
                            values: positions
                        }),
                        color: new bmgl.GeometryAttribute({
                            componentDatatype: bmgl.ComponentDatatype.FLOAT,
                            componentsPerAttribute: 4,
                            values: colors
                        })
                    },
                    indices: indices,
                    primitiveType: bmgl.PrimitiveType.POINTS,
                    boundingSphere: bmgl.BoundingSphere.fromVertices(positions)
                });
            }

            function CreateAppearence(fs, vs) {
                return new bmgl.Appearance({
                    renderState: {
                        blending: bmgl.BlendingState.PRE_MULTIPLIED_ALPHA_BLEND,
                        depthTest: { enabled: true },
                        depthMask: true
                    },
                    fragmentShaderSource: fs,
                    vertexShaderSource: vs
                });
            }

            function VSPolylie() {
                return "attribute vec3 position3DHigh;\
                        attribute vec3 position3DLow;\
                        attribute vec4 color;\
                        varying vec4 v_color;\
                        attribute float batchId;\
                        void main()\
                        {\
                            vec4 p = czm_computePosition();\
                            v_color =color;\
                            p = czm_modelViewProjectionRelativeToEye * p;\
                            gl_Position = p;\
                            gl_PointSize=4.0;\
                        }\
                        ";
            }

            function FSPolyline() {
                return "varying vec4 v_color;\
            void main()\
            {\
                 float d = distance(gl_PointCoord, vec2(0.5,0.5));\
                 if(d < 0.5){\
                    gl_FragColor = v_color;\
                 }else{\
                    discard;\
                 }\
            }\
            ";
            }

            _.prototype.remove = function () {
                if (this.primitive != null) {
                    viewer.scene.primitives.remove(this.primitive);
                    this.primitive = null;
                }
            }
            _.prototype.updateCartesianPosition = function (cartesians) {
                if (this.primitive != null) {
                    viewer.scene.primitives.remove(this.primitive);
                    if (cartesians && cartesians.length < 2) { return; }
                    if (cartesians.length === this.positionArr.length / 3) {
                        var p1 = cartesians[0];
                        var p2 = cartesians[1];
                        this.positionArr = new Float64Array([
                            p1.x, p1.y, p1.z,
                            p2.x, p2.y, p2.z
                        ]);
                        geometry = CreateGeometry(this.positionArr, this.colorArr, this.indiceArr);
                    } else {
                        //默認藍色
                        var postionsTemp = [];
                        var colorsTemp = [];
                        var indicesTesm = [];
                        for (var i = 0; i < cartesians.length; i++) {
                            postionsTemp.push(cartesians[i].x);
                            postionsTemp.push(cartesians[i].y);
                            postionsTemp.push(cartesians[i].z);

                            colorsTemp.push(0.0);
                            colorsTemp.push(0.0);
                            colorsTemp.push(1.0);
                            colorsTemp.push(1.0);
                        }
                        for (var i = 0; i < cartesians.length; i++) {
                            indicesTesm.push(i);
                        }
                        this.positionArr = new Float64Array(postionsTemp);
                        this.colorArr = new Float32Array(colorsTemp);
                        this.indiceArr = new Uint16Array(indicesTesm);

                        geometry = CreateGeometry(this.positionArr, this.colorArr, this.indiceArr);
                        appearance = CreateAppearence(fragmentShader, vertexShader);
                    }

                    this.primitive = viewer.scene.primitives.add(new bmgl.Primitive({
                        geometryInstances: new bmgl.GeometryInstance({
                            geometry: geometry
                        }),
                        appearance: appearance,
                        asynchronous: false
                    }));
                } else { return; }
            }
            _.prototype.updateCartesianPositionColor = function (cartesians, colors) {
                if (colors.length === cartesians.length * 4) { } else { return; }
                if (this.primitive != null) {
                    viewer.scene.primitives.remove(this.primitive);
                    if (cartesians && cartesians.length < 2) { return; }
                    if (cartesians.length === this.positionArr.length / 3) {
                        var p1 = cartesians[0];
                        var p2 = cartesians[1];
                        this.positionArr = new Float64Array([
                            p1.x, p1.y, p1.z,
                            p2.x, p2.y, p2.z
                        ]);

                        this.colorArr = new Float32Array(colors);

                        geometry = CreateGeometry(this.positionArr, this.colorArr, this.indiceArr);
                    } else {
                        var postionsTemp = [];
                        var indicesTesm = [];

                        for (var i = 0; i < cartesians.length; i++) {
                            postionsTemp.push(cartesians[i].x);
                            postionsTemp.push(cartesians[i].y);
                            postionsTemp.push(cartesians[i].z);
                        }
                        for (var i = 0; i < cartesians.length; i++) {
                            indicesTesm.push(i);
                        }
                        this.positionArr = new Float64Array(postionsTemp);
                        this.colorArr = new Float32Array(colors);
                        this.indiceArr = new Uint16Array(indicesTesm);

                        geometry = CreateGeometry(this.positionArr, this.colorArr, this.indiceArr);
                        appearance = CreateAppearence(fragmentShader, vertexShader);
                    }

                    this.primitive = viewer.scene.primitives.add(new bmgl.Primitive({
                        geometryInstances: new bmgl.GeometryInstance({
                            geometry: geometry
                        }),
                        appearance: appearance,
                        asynchronous: false
                    }));
                } else { return; }
            }
            return _;
        })();
</script>
</body>
</html>
                                                                                                                                                                                            
主站蜘蛛池模板: 女人裸体特黄做爰的视频 | 看全色黄大色黄大片大学生图片 | 人与动人物xxxx毛片 | 国产久一| 国产精品福利视频一区 | 99久久免费精品国产男女性高好 | 闺蜜互慰吃奶互揉69式磨豆腐 | 波多野结衣视频在线看 | 欧美国产不卡 | 成人免费网视频 | 成人爽a毛片一区二区免费 成人爽爽爽 | 青青青爽视频在线观看 | 天天躁日日躁bbbbb | 欧美18aaaⅹxx | 中国少妇乱子伦视频播放 | 精品一区欧美 | 国产精品高潮呻吟久久久 | 六月婷婷久香在线视频 | 国产一区二区视频免费 | 中出av在线 | 97性无码区免费 | 国产一区精品视频 | 99久久人人爽亚洲精品美女 | 2018自拍偷拍| 色欲麻豆国产福利精品 | 中文字幕视频在线播放 | 白嫩少妇和二男三p爽的大声呻吟 | 色男人影院 | 91精品国产九九九久久久亚洲 | 99热成人 | 主播粉嫩国产在线精品 | 久久久亚洲国产天美传媒修理工 | 色老头免费视频 | 明日花绮罗高潮无打码 | 免费色视频网站 | 亚洲成av人片在www色猫咪 | 免费日韩av | 欧洲天堂网 | 久久精品国产一区二区三区肥胖 | 日本xxxx免费 | 超碰pron| 真实国产露脸乱 | 国产精品高潮呻吟三区四区 | 中文字幕不卡 | 国产精品丝袜黑色高跟鞋v18 | 97久久精品人人做人人爽 | 日韩精品一区二区三区视频 | 日本精品一区二区在线观看 | 直接看的av网站 | 国产精品人妻熟女毛片av久 | 亚洲精选在线 | 中文字幕亚洲精品日韩 | 一区二区亚洲精品国产精华液 | 久草在线资源网 | 日本不卡一区二区三区在线 | 天天干狠狠干 | 99麻豆久久久国产精品免费 | 六月婷婷久久 | 精品人妻无码一区二区色欲产成人 | 色综合国产 | 欧美乱妇狂野欧美在线视频 | 天堂а√在线地址中文在线 | 国产欧美一区二区三区国产幕精品 | 夜夜高潮久久做爽久久 | 亚洲区视频 | 亚洲第一页中文字幕 | 白丝乳交内射一二三区 | 国产精品久久福利网站 | 亚洲va国产va天堂va久久 | 亚洲欧美日韩成人高清在线一区 | 啪在线视频 | 狼人青草久久网伊人 | 国产aⅴ超薄肉色丝袜交足 国产aⅴ精品 | 香蕉国产片一级一级一级一级 | 国产精品美女久久久久av爽 | 国产福利午夜 | 无码人妻丰满熟妇奶水区码 | 国产成人av在线影院 | 懂色av一区二区三区在线播放 | 性久久 | 九九色播| 少妇高潮惨叫正在播放对白 | 亚洲国产精品久久久 | 久久久91视频| 秋霞一级全黄大片 | 成人爱爱免费视频 | 黄色一级小视频 | 18色av| 性色在线观看 | 一本久久a久久精品亚洲 | 与黑人做爰的日本人 | 国产香蕉视频在线播放 | 国产老妇av| 黑人巨大99vs小早川怜子 | 日本黄色中文字幕 | 久久丁香网 | 久久99精品久久久久久蜜芽 | 亚洲综合国产精品 | 粉嫩粉嫩的虎白女18在线软件 | 天天天色综合a | 人人插插 | 亚洲一区中文字幕在线观看 | 特黄少妇60分钟在线观看播放 | 91丨九色丨首页 | 色诱久久久久综合网ywww | 亚洲精品无码高潮喷水在线 | 久久久国产99久久国产久灭火器 | 综合色影院 | 欧美最猛黑人xxxx | 在线观看国产一区二区三区 | 毛片av在线观看 | 久久无码高潮喷水 | 日韩av免费看 | 暖暖日本在线观看 | 欧美污污视频 | 色五月丁香五月综合五月 | 中文字幕3页| 国产黄色精品网站 | 成人免费区一区二区三区 | 欧美疯狂做受xxxx高潮小说 | 亚无码乱人伦一区二区 | 国产在线拍 | 午夜中出| av网站在线观看免费 | 色男人在线 | 国产乱人乱精一区二视频 | 永久免费看片在线播放 | 日韩精品理论 | 欧美一级免费片 | 韩国和女邻居做爰2三级 | 色老板精品凹凸在线视频观看 | 日韩精品黄 | 欧美熟妇丰满肥白大屁股免费视频 | 18色av| 九色精品视频 | 调教在线观看 | 日韩成人免费 | 激情超碰在线 | 中文字幕免费高清 | 无码里番纯肉h在线网站 | 日本国产乱弄免费视频 | 人人爽久久涩噜噜噜av | 欧美有码视频 | 村上凉子在线播放av88 | 最近中文字幕无免费 | 亚洲狼人精品一区二区三区 | 久久se精品一区精品二区 | 色护士极品影院 | 久久久久国色av免费观看性色 | 欧美日韩免费做爰视频 | 爱情岛论坛亚洲首页入口章节 | 青青操精品 | 亚洲精品久久久口爆吞精 | 国产99久久久国产精品潘金 | 娇小性xxxxx极品娇小小说 | 狠狠爱俺也去去就色 | 伊人嫩草久久欧美站 | 狠狠色丁香婷婷 | 国产免费黄色小视频 | 亚洲精品天堂网 | 成人免费毛片糖心 | 精品久久久久国产免费第一页 | 久久久久久天堂 | 久久午夜免费观看 | 天天爱天天色 | 成人性生交大片免费看r链接 | 少妇高潮久久久 | 亚洲综合无码无在线观看 | 日韩欧美一区二区三区, | 日韩精品不卡在线 | 四虎884aa成人精品最新 | 农村老女人av | 青草99 | 熟妇高潮喷沈阳45熟妇高潮喷 | av手机免费看 | 免费大片黄在线观看视频网站 | 超碰精品在线观看 | 国产手机在线αⅴ片无码观看 | 久久黄网站 | 国产女精品视频网站免费 | 九九精品视频在线 | 中国性偷拍xxxⅹ | 文中字幕一区二区三区视频播放 | 97久久人人超碰超碰窝窝 | 曰韩无码av一区二区免费 | 4438亚洲最大| 久久综合给久久狠狠97色 | 97久久爽久久爽爽久久片 | 亚洲热热 | 影音先锋中文字幕无码 | 久久超碰97人人做人人爱 | 51成人精品网站 | 欧美日韩国产精品综合 | 国产精品久久久久久久久久久久久久 | 99综合网| 香港曰本韩国三级网站 | 国产精久久一区二区三区 | 国产一区二区毛片 | 日韩性网 | 亚洲一级网站 | 6080yyy午夜理论片中无码 | 成人欧美一区二区三区黑人冫 | 亚洲国产成人av毛片大全 | 老牛嫩草一区二区三区眼镜 | 99久久精品日本一区二区免费 | 秋霞欧美视频 | 国产精品国产三级国产专播 | 91麻豆精品秘密 | 国产精品久久久久久久久久久久 | 手机看片福利永久 | 午夜精品久久久久久久传媒 | 日本少妇bbwbbw精品 | 久久99精品国产.久久久久 | 91看片淫黄大片 | 在线看av网址 | 国产精品久久久久999 | av在线毛片| 91成人精品 | av无码不卡在线观看免费 | 肥老熟妇伦子伦456视频 | 欧美毛茸茸| 久久精品aⅴ无码中文字字幕蜜桃 | 亚洲精品sm一区二区 | 在线a久青草视频在线观看 无套内射极品少妇chinese | 少妇高潮淫片免费观看 | 日韩毛片在线观看 | 激情内射日本一区二区三区 | 亚洲国产一区二区在线观看 | 久久久久久久久久av | 国产99久久久国产精品 | 国产精品户外野外 | 日本6一12娇小xxxⅹhd | 国产又猛又粗 | 中文字幕无码av激情不卡 | 红桃视频91 | 香蕉久久国产av一区二区 | 国产色婷婷五月精品综合在线 | 久9精品 | 国产又黄又硬又粗 | 在线免费黄网 | 少妇饥渴偷公乱h姚蕊 | 日本少妇五级床片 | av永久免费观看 | 清纯小美女主播流白浆 | 亚洲精品少妇30p | 亚洲影视中文字幕 | 欧美激情日韩 | 最新精品国偷自产在线 | 日本丰满大乳奶做爰 | 无遮挡h肉动漫在线观看 | 性一交一乱一乱一视频96 | 小毛片| 亚洲乱码一区二区三区在线观看 | 国产精品久久久久久久久久久久久久久久 | 亚洲大尺度在线观看 | 欧美激情在线一区二区三区 | 99蜜桃臀久久久欧美精品网站 | 农村欧美丰满熟妇xxxx | 那里可以看毛片 | 91精品一区二区三区四区 | 久久国产欧美日韩 | 小鲜肉自慰网站xnxx | 日本熟妇色xxxxx日本免费看 | 亚洲伊人天堂 | 国产女上位 | 成熟少妇一区二区三区 | 依人在线观看 | 久久久久麻豆v国产精华液好用吗 | 爱情岛论坛自拍亚洲品质极速福利 | 亚洲不卡高清视频 | 国产精品一二三区成毛片视频 | 成人乱淫av日日摸夜夜爽 | 亚洲精品一区二区三区大桥未久 | 亚洲伊人网站 | 国产精品久久久久久久久免小说 | 91国在线啪 | 在线资源av| 国产精欧美一区二区三区 | 免费成人黄| 337p大胆啪啪私拍人体 | 国产在线精品无码二区 | а√天堂8资源在线官网 | 日韩短视频 | 视频一区在线播放 | 日韩三级a | 91久久精品日日躁夜夜躁欧美 | 国产日韩aaaa片毛片 | 欧美激情视频一区二区三区不卡 | 亚洲国产精品自产在线播放 | 国产在线精品一区二区三区 | 性欧美在线视频免费观看 | 东热ca大乱合集 | 精品黄色一级片 | 欧美日韩国产一区二区 | 国产偷v国产偷v精品视频 | 日本午夜一区二区 | 国产又色又爽无遮挡免费 | 少妇人妻精品一区二区三区 | 亚洲人成网站在线在线观看 | 免费观看全黄做爰大片国产 | 一区二区欧美在线 | 亚洲国产精品无码一线岛国 | 友田真希一区二区 | 成人在线视频一区二区三区 | 精品久久久一区二区 | 欧美无砖砖区免费 | 午夜精品久久久久久久四虎 | 五月花综合网 | 午夜视频免费 | 国产无套粉嫩白浆内谢网站 | 免费又黄又爽又猛的毛片 | 好爽…又高潮了免费毛片 | 黄色片在线观看视频 | 日韩美女一区二区三区 | youporn免费视频成人软件 | 欧美性生活视频 | 狠狠躁日日躁夜夜躁 | 欧美高大丰满少妇xxxx | 欧美激情一区二区三区在线 | 你懂的亚洲 | 国产在线一区二区三区四区 | 精品视频99| 亚洲国产a∨无码中文777 | 日本不卡视频一区二区三区 | 欧美日韩在线播放视频 | 色视频免费在线观看 | 白天躁晚上躁麻豆视频 | 免费拍拍拍网站 | 中国少妇乱子伦视频播放 | 舌头伸进添得好爽高潮欧美 | 99色婷婷 | 国产乱子伦在线观看 | 亚洲国产精品ⅴa在线观看 天堂中文在线资源 | 欧美激情一区在线 | 69xxⅹ性视频免费 | 国产亚洲一卡2卡3卡4卡网站 | 婷婷天堂 | 久久精品这里热有精品 | 日韩在线免费视频 | 欧美亚洲第一页 | 亚洲国产精品999久久久婷婷 | 又大又黄又爽视频一区二区 | a4yy午夜| 国产特级毛片aaaaaa毛片 | 久久精品aⅴ无码中文字字幕重口 | 亚洲综合色丁香婷婷六月图片 | 亚洲国产精品女主播 | 国产成a人亚洲精v品无码性色 | 草草影院发布页 | 制服丝袜av无码专区 | 婷婷色伊人 | 老熟女重囗味hdxx70星空 | 久久av高潮av | 亚洲色图欧美激情 | 亚洲精品久久久中文字幕 | 日韩图片区 | 国产精品成人va在线播放 | 免费热情视频 | 又色又爽又黄又免费的照片 | 台湾午夜a级理论片在线播放 | 久久精品79国产精品 | 女同亚洲精品一区二区三 | 国产成人亚洲综合a∨猫咪 国产成人亚洲综合a∨婷婷 | 男女爽爽无遮挡午夜视频 | 成人福利视频网 | 国产麻豆一区二区三区精品 | 2020精品国产自在现线看 | 精品视频一区二区三区在线观看 | 明星各种姿势顶弄呻吟h | 国模精品一区二区三区 | 一本色道综合久久欧美日韩精品 | 精品无码国产自产拍在线观看蜜 | a级黄色毛片视频 | 国产精品美女久久久久久久久 | 欧美牲交a欧美牲交aⅴ免费真 | 日韩一级不卡 | 国产午夜成人免费看片 | 暖暖日本在线观看 | 亚洲欧美综合色 | 综合久久精品 | 国产成人精品亚洲线观看 | 永久免费视频 国产 | 国产后入清纯学生妹 | 成人性做爰aaa片免费看 | 邻居少妇张开腿让我爽视频 | 国内三级视频 | 夜夜躁狠狠躁日日躁av麻豆 | 精品亚洲欧美无人区乱码 | 泰国三级av | 三级三级三级a级全黄网站 三级三级三级三级 | 国内自在二三区 | 国产精品18p | 成人少妇高潮流白浆 | 香蕉av777xxx色综合一区 | 亚洲欧美日韩综合一区二区 | 欧美aⅴ| 最新日韩精品中文字幕 | 91午夜少妇三级全黄 | 欧美阿v高清资源不卡在线播放 | 午夜免费福利 | 天天做天天爱天天综合色 | 日韩中文字幕观看 | 国产精品麻豆免费观看 | 国产成人亚洲精品无码h在线 | 亚洲精品久久久乳夜夜欧美 | 久草成人网 | 免费的黄网站在线观看 | 山村大伦淫第1部分阅读小说 | 少妇被粗大的猛烈进出免费视频 | 午夜又黄又爽 | 亚洲精品国产一区黑色丝袜 | 伊人久久大香线蕉av色 | 激情黄色小说视频 | 日日噜噜夜夜狠狠久久香91 | 色婷婷综合久久久久中文一区二区 | 真实国产乱啪福利露脸 | 亚洲图片三区 | 国产精品bbwbbwbbw在线 | 国产大学生自拍视频 | 少妇好爽影院 | 成人免费一区二区 | 日日噜噜夜夜狠狠久久丁香五月 | 在线观看福利视频 | 一本色道久久综合亚洲精品婷婷 | 中文字幕不卡在线88 | 上司人妻互换中文字幕 | 99热在线观看 | 久久久亚洲精品一区二区三区浴池 | 中文字幕一区二区三区日韩精品 | 无码国产精品一区二区vr老人 | 爱爱免费视频网站 | 国产吃瓜在线 | 91成人品 | 色诱久久久久综合网ywww | 久色视频在线播放 | 亚欧免费无码aⅴ在线观看 麻豆国产一区二区三区四区 | 成人超碰在线 | 国产精品久久久久久久毛片明星 | 漂亮人妻被黑人久久精品 | 国产一区二区三区网站 | 天天鲁一鲁摸一摸爽一爽视频 | 91在线公开视频 | 国产又黄又爽又色的视频 | 日韩一区二区三区视频 | 久久亚洲精品ab无码播放 | 国产免费色视频 | 欧美乱妇高清无乱码在线观看 | 顶级少妇做爰视频在线观看 | 欧美国产一区二区三区 | 91久久夜色精品国产九色 | 激情亚洲 | 国产精品一区二区av日韩在线 | 91久久中文字幕 | 香蕉黄色网 | 91精品国产九九九久久久亚洲 | 日本一区二区不卡视频 | 欧美日韩中文字幕在线视频 | 国产无套粉嫩白浆内精在线网站 | 一本一道久久综合久久 | a级毛片国产 | 午夜免费无码福利视频 | 亚洲乱码日产精品一二三 | 国产毛片99| 午夜寂寞影院在线观看 | 给我免费播放毛片 | 超碰97人人射妻 | 欧美成人精品一区二区 | 久久蜜臀| 男人吃奶摸下挵进去好爽 | 国产精品视频一区国模私拍 | 在线中文字幕乱码英文字幕正常 | 亚洲精品92内射 | 免费超碰在线 | 看免费黄色一级片 | 久久久精品网站 | 欧美一卡二卡三卡 | 伊人视屏 | 久久国产精品久久精品国产 | 九九热精品 | www.久久av.com| 亚洲一区二区三区自拍公司 | 日韩精品一区二区三区免费视频观看 | 国产成人综合色在线观看网站 | 国产激情网 | 国产精品国产三级国产av中文 | 国产成人免费在线观看 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 波多野结衣久久 | 疯狂做受xxxx高潮欧美日本 | 亚洲大尺度av | 日本色偷偷 | 亚洲4p| 亚洲精品久久蜜桃站 | 亚洲精品久久久口爆吞精 | 免费看黄色片的网站 | 色网站在线免费观看 | 少妇和黑人老外做爰av | 国产精品久久久久久久久久久久人四虎 | 成人黄色在线观看视频 | 国产精品一区二区在线观看 | 日本韩国欧美中文字幕 | 成人91在线 | 99国产精品99久久久久久粉嫩 | 色哟哟在线网站 | 色站综合 | 精品无码国模私拍视频 | 四虎激情 | 国产精品99久久久精品 | 国产顶级熟妇高潮xxxxx | 日韩欧美国产成人 | 日本a大片| 一级欧美一级日韩片免费观看 | 亚洲国产精品人人做人人爱 | 日本免费成人 | 国产精品16p | 久久66热人妻偷产精品 | 国产69精品久久久久9999apgf | 色www亚洲国产阿娇yao | 日韩精品无码一区二区三区av | 亚洲国产精品91 | 女人性做爰24姿势视频 | 蜜臀久久精品久久久用户群体 | 亚洲国产精品成人综合久久久 | 久久精品免费国产 | 18性夜影院午夜寂寞影院免费 | 日本黑人一区二区免费视频 | 欧美xxxx18| 2023亚洲精品国偷拍自产在线 | 成人av一区二区免费播放 | 黑人巨大精品欧美一区二区奶水 | 一级三级毛片 | 人妻少妇精品一区二区三区 | 日本精品视频网站 | 亚洲人成人一区二区在线观看 | 国产精品视频合集 | av无码a在线观看 | 色婷婷综合久久久久中文 | 中文人妻无码一区二区三区信息 | a级黄色片免费 | 亚洲人在线 | 日本男女激情视频 | youjizz中国丰满少妇 | 精品视频成人 | 国产夫妻自拍小视频 | 艳妇乳肉豪妇荡乳 | 色婷五月天 | 伊人精品| 97久久偷偷做嫩草影院免费看 | 福利社91| 久久男人的天堂 | 欧美成人精品高清视频在线观看 | 青青艹av| 久久久久女教师免费一区 | 国产精品久久免费视频 | 中文字幕综合在线分类 | 国产精品av久久久久久网址 | 播播激情网 | 国产精品免费一区二区区 | 亚洲在线中文字幕 | 在线观看午夜福利院视频 | 精品国产999久久久免费 | 黑人玩弄出轨人妻松雪 | 久久中文一区二区 | 久久躁狠狠躁夜夜av | 国产天堂视频在线观看 | 国产懂色av一区二区三区 | 香蕉依人| 日韩欧美人妻一区二区三区 | 日本成人不卡 | 伊人情人色综合网站 | 国产性生交大片免费 | 97av在线播放| 免费91网站| 亚洲视频自拍偷拍 | 国产精品伦 | 国产偷国产偷亚洲清高网站 | 亚洲人成无码区在线观看 | 国产免费观看久久黄av片 | yy6080午夜八戒国产亚洲 | 人妻洗澡被强公日日澡电影 | 精品国产99久久久久久宅男i | 中文字幕在线日亚洲9 | 青青伊人国产 | 天堂欧美 | 深爱激情综合网 | 91精品国产黑色瑜伽裤 | 久久夜色精品国产噜噜av | 深夜免费福利视频 | 精品美女久久久 | 亚洲欧美日韩精品在线 | 校园激情亚洲 | аⅴ资源中文在线天堂 | 欧美抠逼视频 | 少妇视频一区二区三区 | 国产一二三区av | 日日夜夜爽爽 | 中文字幕热久久久久久久 | 国产 日韩 欧美 精品 | 日韩中文字幕区一区有砖一区 | 国产精品久久久久久久久绿色 | 在线播放高清视频www | 衣服被扒开强摸双乳18禁网站 | 波多野结衣免费一区视频 | 欧美性生活一区 | 久久不见久久见中文字幕免费 | 午夜日韩在线 | 激情午夜影院 | 午夜激情啪啪 | 男女肉粗暴进来动态图 | 国产超级va在线观看视频 | 亚洲国产一区二区a毛片 | 国产乱码一区二区三区咪爱 | 韩国性经典xxxxhd | 成人交性视频免费看 | 蜜臀av性久久久久蜜臀aⅴ麻豆 |