Phylloceratidae

Phylloceratidae is the predominant family of the Phylloceratina with some 15 or more genera found in rocks ranging from the Lower Jurassic to the Upper Cretaceous. Members of the Phylloceratidae are characterized by smooth, involute shells with very thin walls. Many are covered with fine growth lines but are usually without ribbing. Sutures are complex with the major and minor branches of the saddles with phylloid or spatulate endings.[1]

Phylloceratidae
Temporal range: Lower Jurassic–Upper Cretaceous
Fossil shells of Phylloceras serum from Southern Alps, on display at Galerie de paléontologie et d'anatomie comparée in Paris
Scientific classification
Kingdom: Animalia
Phylum: Mollusca
Class: Cephalopoda
Subclass: Ammonoidea
Order: Ammonitida
Superfamily: Phylloceratoidea
Family: Phylloceratidae
Zittel, 1884
Subfamilies
  • Calliphylloceratinae
  • Phylloceratinae

Evolution and phylogeny

The Phylloceratidae are probably derived from the Late Triassic Discophyllitidae by increasing the sutural complexity and evolving involute coiling. The Discophyllitidae in turn have their origin in the Ussuritidae, also known as the Monophyllitidae.[1]

The Phylloceratidae gave rise at or near the beginning of the Jurassic to the ancestral Lytoceratina, the early Lower Jurassic Peluroacanthitidae and Ectocentridae. The Phyloceratidae also gave rise at or near the beginning of the Jurassic to the Psiloceratoidea which unites families of the Early Jurassic Ammonitina. Other Jurassic Ammonitina are derived from the Lytoceratina. Later, phylloceratids are said to have given rise to Cretaceous Ammonitina included in the Desmoceratoidea, Hoplitoidea, and Acanthoceratoidea.[1]

Sutural morphology

Sutures in the Phylloceratidae vary in complexity and are usually described on the basis of the saddles, which diverge to the front. Saddle endings may be double (diphyllic), triple (triphyllic), or quadruple (tetraphillic).[1] Branching may be asymmetric. Intervening lobes are variably branched with thorn-like or spinose terminations as viewed in plan.

Subfamilies and genera

gollark: ```rusttype Items = HashMap<ItemType, u32>;fn quantity(items: &Items, desired: &ItemType) -> u32 { if let Some(available_quantity) = items.get(desired) { *available_quantity } else { 0 }}fn contains(items: &Items, desired: &Item) -> bool { quantity(items, &to_item_type(desired)) >= desired.quantity}fn satisfies(available: &Items, desired: &Items) -> bool { for (typ, desired_quantity) in desired.iter() { if quantity(available, typ) < *desired_quantity { return false } } true}fn to_map(is: &Vec<Item>) -> Items { let out = HashMap::new(); for i in is.iter() { out.entry(to_item_type_clone(i)) .and_modify(|e| { *e += 1 }) .or_insert(0); } out}fn one_item(i: Item) -> Items { let out = HashMap::new(); out.insert(to_item_type(&i), i.quantity); out}#[derive(Debug, Deserialize, PartialEq, Eq, Serialize, Clone)]pub struct CraftingResult { pub tasks: Vec<Recipe>, pub costs: Items, pub outputs: Items}fn solve(desired: Item, available: Items, recipes: &MultiMap<ItemType, Recipe>) -> CraftingResult { if contains(&available, &desired) { // If our available items list already contains the desired item, yay, we can just do nothing return CraftingResult { tasks: vec![], costs: one_item(desired), outputs: one_item(desired) } } if let Some(recipes) = recipes.get_vec(&to_item_type(&desired)) { for recipe in recipes.iter() { let result = solve() // ??? } } else { CraftingResult { tasks: vec![], costs: HashMap::new(), outputs: HashMap::new() } }}```My code, or at least part of it.
gollark: That is NOT THE HARD PART.
gollark: (I'm still confused though)
gollark: People have already given helpful suggestions how to, soo...
gollark: Parsing a recipe dump and figuring out the steps to autocraft an item.

References

  1. Treatise on Invertebrate Paleontology Part L Mollusca 4, Ammonoidea, 1957
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.