eulumdat-quiz 0.6.0

Photometric knowledge quiz engine for lighting professionals
Documentation
use crate::{Category, Difficulty, Question};

pub fn questions() -> Vec<Question> {
    vec![
        Question {
            id: 3001,
            category: Category::Symmetry,
            difficulty: Difficulty::Beginner,
            text: "How many symmetry types are defined in the EULUMDAT format?".into(),
            options: vec!["3".into(), "4".into(), "5".into(), "6".into()],
            correct_index: 2,
            explanation: "EULUMDAT defines 5 symmetry types: Isym 0 (none), 1 (vertical axis), 2 (C0-C180 plane), 3 (C90-C270 plane), 4 (both planes).".into(),
            reference: Some("EULUMDAT specification, Line 3".into()),
        },
        Question {
            id: 3002,
            category: Category::Symmetry,
            difficulty: Difficulty::Beginner,
            text: "What type of luminaire typically has rotational symmetry (Isym=1)?".into(),
            options: vec!["Linear fluorescent".into(), "Round downlight".into(), "Street light".into(), "Wall washer".into()],
            correct_index: 1,
            explanation: "Round downlights and point sources with circular apertures typically have rotational symmetry — their light distribution is the same in all C-planes.".into(),
            reference: Some("EULUMDAT specification".into()),
        },
        Question {
            id: 3003,
            category: Category::Symmetry,
            difficulty: Difficulty::Intermediate,
            text: "How many C-planes are stored for VerticalAxis (Isym=1) symmetry?".into(),
            options: vec!["0".into(), "1".into(), "2".into(), "4".into()],
            correct_index: 1,
            explanation: "Isym=1 (rotationally symmetric) stores only 1 C-plane since the distribution is identical in all directions.".into(),
            reference: Some("EULUMDAT specification".into()),
        },
        Question {
            id: 3004,
            category: Category::Symmetry,
            difficulty: Difficulty::Intermediate,
            text: "What does BothPlanes symmetry (Isym=4) store?".into(),
            options: vec![
                "Full 360° data".into(),
                "Half data (0-180°)".into(),
                "Quarter data (0-90°)".into(),
                "Only the 0° and 90° planes".into(),
            ],
            correct_index: 2,
            explanation: "Isym=4 stores quarter data (C-planes from 0° to 90°). The remaining data is generated by mirroring across both the C0-C180 and C90-C270 planes.".into(),
            reference: Some("EULUMDAT specification".into()),
        },
        Question {
            id: 3005,
            category: Category::Symmetry,
            difficulty: Difficulty::Intermediate,
            text: "For PlaneC0C180 symmetry (Isym=2), what range of C-planes is stored?".into(),
            options: vec!["0° to 90°".into(), "0° to 180°".into(), "0° to 270°".into(), "0° to 360°".into()],
            correct_index: 1,
            explanation: "Isym=2 stores C-planes from 0° to 180°. Data for 180°-360° is mirrored from the stored half.".into(),
            reference: Some("EULUMDAT specification".into()),
        },
        Question {
            id: 3006,
            category: Category::Symmetry,
            difficulty: Difficulty::Expert,
            text: "Can you query intensity at C=270° with BothPlanes (Isym=4) symmetry?".into(),
            options: vec![
                "No, only 0-90° is available".into(),
                "Yes, via automatic mirroring that expands to full 360°".into(),
                "Only if interpolation is enabled".into(),
                "Only for gamma angles below 90°".into(),
            ],
            correct_index: 1,
            explanation: "The symmetry expansion algorithm automatically mirrors quarter data to generate the full 360° distribution. C=270° maps to C=90° via the C90-C270 mirror.".into(),
            reference: Some("EULUMDAT specification".into()),
        },
        Question {
            id: 3007,
            category: Category::Symmetry,
            difficulty: Difficulty::Expert,
            text: "What is the approximate data compression ratio for VerticalAxis (Isym=1) vs full 360° data with 1° resolution?".into(),
            options: vec!["2:1".into(), "90:1".into(), "180:1".into(), "360:1".into()],
            correct_index: 3,
            explanation: "With 1° resolution, full data has 361 C-planes while Isym=1 stores just 1. This is approximately a 360:1 compression ratio.".into(),
            reference: Some("EULUMDAT specification".into()),
        },
        Question {
            id: 3008,
            category: Category::Symmetry,
            difficulty: Difficulty::Beginner,
            text: "What does Isym=0 (no symmetry) mean?".into(),
            options: vec![
                "The luminaire is perfectly symmetric".into(),
                "Full 360° photometric data is stored".into(),
                "No photometric data is available".into(),
                "Only one C-plane is measured".into(),
            ],
            correct_index: 1,
            explanation: "Isym=0 means no symmetry assumption is made, so the file stores the complete 360° distribution with all measured C-planes.".into(),
            reference: Some("EULUMDAT specification".into()),
        },
        Question {
            id: 3009,
            category: Category::Symmetry,
            difficulty: Difficulty::Intermediate,
            text: "Which symmetry type is most common for linear fluorescent luminaires?".into(),
            options: vec![
                "Isym=0 (none)".into(),
                "Isym=1 (vertical axis)".into(),
                "Isym=2 (C0-C180 plane)".into(),
                "Isym=4 (both planes)".into(),
            ],
            correct_index: 3,
            explanation: "Linear fluorescent luminaires typically have symmetry about both the lengthwise (C0-C180) and crosswise (C90-C270) planes, making Isym=4 the most common.".into(),
            reference: Some("EULUMDAT specification".into()),
        },
        Question {
            id: 3010,
            category: Category::Symmetry,
            difficulty: Difficulty::Expert,
            text: "When converting from IES to EULUMDAT, how is IES lateral symmetry mapped?".into(),
            options: vec![
                "It maps directly to Isym=2".into(),
                "There is no equivalent mapping".into(),
                "IES symmetry types map to Isym values based on C-plane ranges".into(),
                "IES files don't support symmetry".into(),
            ],
            correct_index: 2,
            explanation: "IES lateral symmetry (0-180° C-planes) maps to Isym=2. IES quadrilateral symmetry (0-90°) maps to Isym=4. Full distribution maps to Isym=0.".into(),
            reference: Some("ANSI/IESNA LM-63, EULUMDAT specification".into()),
        },
    ]
}