package com.cmvr.edge.client.model.biohead;


import com.cmvr.edge.client.model.EdgeCommonVO;
import lombok.Data;


/**
 * 面部表情控制参数定义
 * 包含生物头部机器人面部各部位的运动参数，用于精确控制面部表情
 */
@Data
public class EdgeFacialExpressionVO extends EdgeCommonVO {

    /**
     * 眉毛参数封装
     */
    private Eyebrow eyebrow;
    /**
     * 眼睑参数封装
     */
    private Eyelid eyelid;
    /**
     * 眼球参数封装
     */
    private Eyeball eyeball;
    /**
     * 嘴巴参数封装
     */
    private Mouth mouth;
    /**
     * 鼻子参数封装
     */
    private Nose nose;
    /**
     * 左唇角控制参数
     */
    private LeftLip leftLip;
    /**
     * 右唇角控制参数
     */
    private RightLip rightLip;

    /**
     * 下巴参数封装
     */
    private Jaw jaw;

    /**
     * 眉毛控制参数
     * 左右眉毛的内外侧垂直位置（0.0-1.0标准化值）
     */
    @Data
    public static class Eyebrow {
        /**
         * 左眉外侧垂直位置
         */
        private float leftOutsideY;
        /**
         * 左眉内侧垂直位置
         */
        private float leftInsideY;
        /**
         * 右眉外侧垂直位置
         */
        private float rightOutsideY;
        /**
         * 右眉内侧垂直位置
         */
        private float rightInsideY;
    }

    /**
     * 眼睑控制参数
     * 左右眼睑的上下位置（0.0-1.0标准化值）
     */
    @Data
    public static class Eyelid {
        /**
         * 左上眼睑垂直位置
         */
        private float leftUpperY;
        /**
         * 左下眼睑垂直位置
         */
        private float leftLowerY;
        /**
         * 右上眼睑垂直位置
         */
        private float rightUpperY;
        /**
         * 右下眼睑垂直位置
         */
        private float rightLowerY;
    }

    /**
     * 眼球控制参数
     * 左右眼球的二维坐标（-1.0到1.0标准化值，中心为0）
     */
    @Data
    public static class Eyeball {
        /**
         * 左眼球水平位置
         */
        private float leftX;
        /**
         * 左眼球垂直位置
         */
        private float leftY;
        /**
         * 右眼球水平位置
         */
        private float rightX;
        /**
         * 右眼球垂直位置
         */
        private float rightY;
    }

    /**
     * 嘴巴控制参数
     * 包含嘴唇整体位置（仅含上唇/下唇 y 坐标）
     */
    @Data
    public static class Mouth {
        /**
         * 上唇垂直位置
         */
        private float upperLipY;
        /**
         * 下唇垂直位置
         */
        private float lowerLipY;
    }

    /**
     * 鼻子控制参数
     * 鼻子左右侧的垂直位置（0.0-1.0标准化值）
     */
    @Data
    public static class Nose {
        /**
         * 鼻子左侧垂直位置
         */
        private float leftY;
        /**
         * 鼻子右侧垂直位置
         */
        private float rightY;
    }

    /**
     * 左唇角控制参数
     * 包含上唇、唇角、下唇的坐标点
     */
    @Data
    public static class LeftLip {
        private float upperX;
        private float upperY;
        private float cornerX;
        private float cornerY;
        private float lowerX;
        private float lowerY;
    }

    /**
     * 右唇角控制参数
     * 结构与左唇角对称
     */
    @Data
    public static class RightLip {
        private float upperX;
        private float upperY;
        private float cornerX;
        private float cornerY;
        private float lowerX;
        private float lowerY;
    }

    /**
     * 下巴控制参数
     * 下巴的二维移动坐标（X/Y轴）
     */
    @Data
    public static class Jaw {
        /**
         * 下巴水平位置
         */
        private float x;
        /**
         * 下巴垂直位置
         */
        private float y;
    }
}
