001/*
002 * Renderer 4. The MIT License.
003 * Copyright (c) 2022 rlkraft@pnw.edu
004 * See LICENSE for details.
005*/
006
007package renderer.scene.util;
008
009import renderer.scene.Model;
010
011/**
012   A {@link Model} that implements {@code MeshMaker} can
013   rebuild its geometric mesh with different values for
014   the number of lines of latitude and longitude while
015   keeping all the other model parameters unchanged.
016*/
017public interface MeshMaker
018{
019   /**
020      @return the number of lines of latitude that the {@link Model} contains
021   */
022   public int getHorzCount();
023
024   /**
025      @return the number of lines of longitude that the {@link Model} contains
026   */
027   public int getVertCount();
028
029   /**
030      Build an instance of the {@link Model} with new values for the number
031      of lines of latitude and longitude while keeping all the other model
032      parameters the same.
033
034      @param n  number of lines of latitude for the returned {@link Model}
035      @param k  number of lines of longitude for the returned {@link Model}
036      @return a new instance of the {@link Model} with the updated parameters
037   */
038   public Model remake(int n, int k);
039}