Faits :
A.
A._ SA est propriétaire de la parcelle n° 508 de la commune de Cossonay. Cette parcelle de 2'284 m2 se trouve dans le hameau d'Allens et est comprise dans le plan partiel d'affectation de la zone du village d'Allens (PPA). Elle supporte, en sa partie sud, une ancienne maison d'habitation de 239 m2, dont le faîte est orienté nord-sud. Au nord de cette maison, dans l'espace de jardin, A._ SA a construit un nouveau bâtiment d'habitation de cinq logements (bâtiment A), sur la base d'un permis de construire délivré par la Municipalité de Cossonay le 20 octobre 2016. Le faîte de ce nouveau bâtiment est orienté est-ouest.
Le 14 septembre 2017, A._ SA a présenté à la municipalité un projet (variante 2017) portant sur la démolition de l'ancienne maison d'habitation et la construction de deux bâtiments (B et C) de cinq logements chacun, l'un au centre de la parcelle, l'autre au sud. Le projet prévoit que les faîtes ont une orientation est-ouest sans être tout à fait parallèles l'un à l'autre, ni au bâtiment déjà érigé; les pans sud des toitures sont recouverts de panneaux photovoltaïques. La constructrice entend satisfaire au standard passif du label Minergie-A.
La Commission communale consultative en matière d'architecture et d'urbanisme s'était prononcée négativement sur un premier projet, légèrement différent, présenté en février 2017. Celle-ci avait notamment considéré que l'orientation des faîtes - reprise dans le projet mis à l'enquête - ne respectait pas le règlement communal et que, cumulés au bâtiment déjà existant, ces deux immeubles supplémentaires dénaturaient le site et cassaient l'harmonie du bâti existant. Elle jugeait en outre "un peu cavalier" de la part du promoteur de ne pas avoir présenté le projet complet d'emblée, auquel cas elle aurait probablement refusé directement le projet global des trois bâtiments.
B.
Par décision du 20 juin 2018, la municipalité a communiqué à la constructrice sa décision de refuser le permis de construire, ce dont les opposants au projet ont été informés le lendemain. Statuant sur recours de la constructrice après avoir notamment procédé à une inspection locale et une audience d'instruction, la Cour de droit administratif et public du Tribunal cantonal vaudois (CDAP) a confirmé cette décision par arrêt du 12 septembre 2019, partageant le point de vue de l'autorité communale à teneur duquel, au contraire de ce que prescrivait le règlement communal, les faîtes des bâtiments projetés ne respectaient pas l'orientation dominante des constructions du hameau.
Par arrêt du 3 juin 2020, le Tribunal fédéral a annulé l'arrêt de la CDAP au motif que l'art. 18a al. 4 LAT (RS 700) n'avait pas été pris en considération. Or, interprété à la lumière de cette disposition, le règlement communal permettait une orientation de faîtes est-ouest. La cause a été renvoyée à la cour cantonale pour nouvel examen de l'esthétique du projet dans le cadre de l'application de l'art. 18a al. 4 LTA (arrêt 1C_ 544/2019).
A nouveau en possession du dossier, la CDAP a, par arrêt du 9 juin 2021, confirmé une nouvelle fois la décision de refus d'autorisation de construire. Les juges cantonaux se sont notamment inspirés d'un nouveau projet élaboré par la constructrice (appelé "variante 2020" par opposition à la "variante 2017" faisant l'objet de la présente procédure), pour considérer qu'il était possible de tenir compte des considérations esthétiques voulues par la commune tout en respectant le principe consacré par l'art. 18a al. 4 LAT faisant en principe primer l'intérêt à l'utilisation de l'énergie solaire sur les aspects esthétiques. Alors que la cause 1C_544/2019 était encore pendante devant le Tribunal fédéral, la constructrice avait en effet déposé une nouvelle demande de permis de construire pour deux bâtiments similaires au projet litigieux (mêmes hauteurs, mêmes volumes, même formes de toitures) mais avec des faîtes orientés à la perpendiculaire de ceux du premier projet, soit nord-sud. Le permis de construire a été délivré par la commune le 16 octobre 2020 et est entré en force; la constructrice n'a toutefois pas renoncé à son projet initial, objet du présent litige.
C.
Agissant par la voie du recours en matière de droit public, A._ SA demande au Tribunal fédéral de réformer l'arrêt cantonal du 9 juin 2021 en ce sens que le permis de construire est octroyé. Subsidiairement, elle conclut à l'annulation de l'arrêt attaqué et au renvoi de la cause à la cour cantonale pour nouvelle décision dans le sens des considérants.
Considérant en droit :
1.
Le recours est formé contre un arrêt final rendu en dernière instance cantonale, dans une cause de droit public. Il est recevable au regard des art. 82 let. a, 86 al. 1 let. d et 90 LTF. La recourante, propriétaire de la parcelle litigieuse et requérante du permis de construire refusé, est particulièrement touchée par l'arrêt attaqué et a un intérêt digne de protection à l'annulation ou la modification de celui-ci au sens de l'art. 89 al. 1 LTF.
Les autres conditions de recevabilité sont réunies, si bien qu'il y a lieu d'entrer en matière sur le recours.
2.
Dans un premier grief, la recourante se plaint d'un établissement manifestement inexact des faits. Elle fait valoir que l'arrêt attaqué constate à tort qu'une orientation des faîtes nord-sud permet d'obtenir la certification Minergie-P (standard de construction à basse consommation d'énergie grâce à une excellente enveloppe du bâtiment [arrêt attaqué, consid. 6c]), ce qui ne serait en fait pas le cas de l'un des bâtiments projetés. En outre, la cour cantonale aurait omis de prendre en considération les effets de l'ombre portée des bâtiments orientés nord-sud sur le bâtiment existant, qui perdrait par conséquent son label Minergie-A (standard de construction avec une autonomie énergétique maximale [arrêt attaqué, consid. 6c]).
2.1. Le Tribunal fédéral statue en principe sur la base des faits établis par l'autorité précédente (art. 105 al. 1 LTF), sous réserve des cas prévus à l'art. 105 al. 2 LTF. Selon l'art. 97 al. 1 LTF, le recours ne peut critiquer la constatation de faits que si ceux-ci ont été établis en violation du droit au sens de l'art. 95 LTF ou de manière manifestement inexacte - en particulier en violation de l'interdiction constitutionnelle de l'arbitraire - et pour autant que la correction du vice soit susceptible d'influer sur le sort de la cause. Il y a en outre arbitraire (art. 9 Cst.) dans l'appréciation des preuves si le juge n'a manifestement pas compris le sens et la portée d'un moyen de preuve, s'il a omis, sans raison sérieuse, de tenir compte d'un moyen important propre à modifier la décision attaquée ou encore si, sur la base des éléments recueillis, il a fait des déductions insoutenables. Conformément à l'art. 106 al. 2 LTF, la partie recourante doit expliquer de manière circonstanciée en quoi ces conditions seraient réalisées. Les faits et les critiques invoqués de manière appellatoire sont irrecevables (ATF 145 I 26 consid. 1.3; 141 IV 369 consid. 6.3).
2.2.
2.2.1. La cour cantonale a retenu que la variante 2020 permet de garantir au bâtiment projeté "B" le label Minergie-P (arrêt attaqué, consid. 6b p. 12).
La recourante se réfère au rapport énergétique du 16 novembre 2020 établi par B._ SA, ainsi qu'à l'étude comparative de C._ SA, le bureau d'architectes auteur des plans, du 14 décembre 2020. A la lecture de ces documents, il apparaît que la seconde se fonde pour l'essentiel sur les calculs du premier dont elle vulgarise le contenu. En tout état, ces documents examinent les besoins de chaleur pour le chauffage des bâtiments à construire (B et C) ainsi que leur production d'énergie renouvelable dans chacune des configurations envisagées.
Sous l'angle des besoins en chauffage, la limite pour l'obtention du label Minergie-P est effectivement dépassée pour le bâtiment B dans la variante 2020. Il n'est toutefois pas manifeste que cette donnée soit corrélée à l'utilisation de l'énergie solaire au sens de l'art. 18a al. 4 LAT. Quoi qu'il en soit, ainsi que le fait valoir la Commune dans sa réponse et comme on le verra ci-dessous, cet élément de fait n'est pas déterminant.
On retiendra en revanche d'office, à la lecture de ces documents, que, s'agissant de la production d'énergie renouvelable - seule litigieuse en droit -, la variante 2017 est autonome en matière d'énergie de chauffage, au contraire de la variante 2020. Conformément aux constatations de la cour cantonale, on voit que la variante 2017 permet une production d'énergie de 30,94 MWh/an, alors que la variante 2020 produit 24,22 MWh/an (-21,7 % environ), soit un degré d'autarcie de 46,4 % pour la variante 2017 et un degré d'autarcie de 38,3 % pour la variante 2020.
2.2.2. S'agissant de l'ombre portée des futurs bâtiments sur la construction déjà existante, la cour cantonale n'a effectivement pas tenu compte de cet élément ni établi les faits s'y rapportant. Il ressort clairement de l'analyse faite par D._ AG le 15 août 2018 et produite par la recourante qu'avec le projet litigieux, le bâtiment A sera en mesure d'injecter 27,07 MWh dans le réseau, alors qu'avec la variante 2020, ce ne seraient plus que 20,74 MWh qui seraient injectés, soit une perte de production de plus de 23 %.
3.
La recourante fait valoir une violation de l'art. 18a LAT.
3.1. A teneur de l'art. 18a al. 4 LAT, l'intérêt à l'utilisation de l'énergie solaire sur des constructions existantes ou nouvelles l'emporte en principe sur les aspects esthétiques.
Cette disposition est directement applicable (JÄGER, in Commentaire pratique LAT: Autorisations de construire, protection juridique et procédure, 2020, n° 7 ad art. 18a LAT; cf. également PIGUET/DYENS, Analyse critique de l'art. 18a LAT révisé: genèse, conditions d'application et portée, RDAF 2014 I p. 502). Elle s'applique partout où il faut apprécier, à l'occasion d'une demande d'autorisation de construire comprenant une installation solaire, des questions relevant notamment de l'intégration architecturale ou de l'application de clauses générales d'esthétique de la législation cantonale ou communale en matière de constructions (JÄGER, op. cit., n° 60). Cela vaut également lorsqu'il est question d'interpréter une notion juridique indéterminée ( ibidem, n° 61). Cette règle a pour conséquence qu'en cas de pesée des intérêts, celui à promouvoir l'énergie solaire l'emporte en principe. Le refus de l'autorisation de construire pour des considérations esthétiques n'est dès lors admissible que dans des cas très exceptionnels et devra être particulièrement bien justifié par la présentation et la discussion des intérêts opposés jugés prépondérants dans le cas concret, une mention générale ("mauvaise intégration" ou "nuit à l'apparence") ne suffisant pas ( ibidem, n° 61). Aussi, si le droit cantonal ou communal peut encore imposer au constructeur, à production et rendements énergétiques comparables, de choisir l'option la moins dommageable sur le plan de l'esthétique, ce droit cantonal ou communal ne peut condamner une utilisation conséquente de l'énergie solaire pour des seuls motifs d'esthétique (ATF 146 II 367 consid 3.1.1; CAVIEZEL/FISCHER, in Öffentliches Baurecht, 2016, n° 3.91 p. 124; HETTICH/PENG, Erleichterte Bewilligung von Solaranlagen in der Rechtspraxis: gut gemeint, wenig effektiv und verfassungsrechtlich fragwürdig, AJP/PJA 10 2015 p. 1432; PIGUET/DYENS, op. cit., p. 532; cf. également JÄGER, op. cit., n° 62). En d'autres termes, l'art. 18a al. 4 LAT restreint la marge d'appréciation des autorités délivrant les autorisations de construire (JÄGER, op. cit., n° 61).
Dans l'affaire 1C_544/2019 du 3 juin 2020 en lien avec la présente cause (ATF 146 II 367), le Tribunal fédéral s'est livré à l'interprétation de la réglementation communale régissant l'orientation des faîtes à la lumière de l'art. 18a al. 4 LAT. Il a constaté que celle-ci pouvait être interprétée dans un sens qui se révélait conforme avec la disposition fédérale. Il a par conséquent laissé indécise la question de savoir si l'art. 18a al. 4 LAT pouvait proscrire toute réglementation qui, pour des motifs d'esthétique, irait systématiquement à l'encontre de l'intérêt à l'utilisation de l'énergie solaire (comme par exemple imposer une orientation des faîtes nord-sud uniquement, réduisant par là de 30 % le potentiel de production d'énergie solaire d'un bâtiment par rapport à une orientation de faîte est-ouest). S'agissant de l'esthétique, le Tribunal fédéral a précisé que les aspects d'un projet justifiés par le recours à l'énergie solaire ne sauraient, en principe et sauf alternative raisonnable, être condamnés pour des motifs esthétiques (consid 4.2).
3.2.
3.2.1. En l'espèce, les premiers juges se sont concentrés sur la notion d'utilisation "conséquente" de l'énergie solaire tirée de la doctrine citée (cf. consid. 3.1 ci-dessus), ce qu'ils ont en pratique défini comme la cohérence ou la logique d'un projet du point de vue de l'énergie solaire. Ils se sont donc attelés à déterminer si les aspects relevant de l'esthétique ayant justifié le refus du projet pouvaient être protégés tout en faisant une utilisation conséquente de l'énergie solaire. Pour ce faire, ils ont comparé le projet litigieux au projet 2020 dont les faîtes des toitures sont perpendiculaires. Dans le cadre de cet examen, ils ont constaté que les bâtiments orientés nord-sud pouvaient avoir des rendements énergétiques comparables à des bâtiments orientés est-ouest, si la surface des panneaux solaires et l'isolation des bâtiments étaient adaptées en conséquence. Ils en ont donc déduit que le projet litigieux aux faites orientés est-ouest pouvait être refusé pour des motifs d'esthétique sans que cela ne viole l'art. 18a al. 4 LAT.
La recourante conteste que cela soit acceptable, dès lors que l'obtention de rendements énergétiques comparables nécessiterait bien plus d'énergie grise ainsi que des surcoûts financiers puisque, conformément à l'étude de B._ SA, il faudrait augmenter le nombre de panneaux solaires (donc en couvrir un second pan de toiture) et augmenter l'isolation thermique du bâtiment de 20 %.
3.2.2. Ainsi que cela ressort de la jurisprudence et la doctrine rappelés ci-dessus, il s'agit en l'occurrence d'examiner le respect du droit fédéral, et non de s'en tenir à un simple examen de l'appréciation de l'esthétique par l'autorité communale. Aussi, quand bien même le Tribunal fédéral observe une certaine retenue s'agissant de l'appréciation des circonstances locales pertinentes, le contrôle judiciaire doit s'opérer avec un plein pouvoir d'examen.
Comme principal élément d'interprétation, il convient de retenir que la formulation de l'art. 18a al. 4 LAT est plus directive que celle de l'art. 12 de la loi fédérale du 30 septembre 2016 sur l'énergie (LEne; RS 730.0), autre norme de droit fédéral dont le but est d'arbitrer les différents intérêts divergents entrant en conflit avec la production d'énergie renouvelable. En effet, dans le cadre de l'art. 12 LEne, le législateur a prévu de conférer, à partir d'un certain seuil de production, un intérêt national à l'installation considérée (al. 2) : dans un tel cas de figure, l'autorité conserve cependant une liberté d'appréciation dans la confrontation des intérêts en cause, supposés d'importance équivalente (al. 3). En d'autres termes, le législateur n'a pas exprimé de priorité. L'art. 18a al. 4 LAT, au contraire, définit rigoureusement le résultat, sauf circonstances particulières, d'une pesée d'intérêts entre la production d'énergie solaire et l'esthétique d'une construction. L'autorité de délivrance de l'autorisation de construire supporte en conséquences le fardeau de la preuve de circonstances particulières propres à l'esthétique justifiant de s'écarter de la solution préconisée par l'art. 18a al. 4 LAT en faveur de la production d'énergie solaire. Dans cette perspective, pour que de telles circonstances particulières soient reconnues, plus l'intérêt à la production à l'énergie solaire est important, plus l'intérêt à l'esthétique de la construction devra l'être également.
En effet, s'il y va, dans l'application de cette disposition, de la protection accrue de l'intérêt privé du propriétaire constructeur, il y va également de la protection d'intérêts publics à plus grande échelle. L'intérêt à l'utilisation de l'énergie solaire que promeut l'art. 18a al. 4 LAT peut notamment induire l'injection de courant produit en surplus dans le réseau. A priori peu importante à la mesure d'une seule construction, la différence de production d'énergie constatée en l'occurrence, reproduite pour un nombre indéterminé d'installations, peut alors devenir significative et contribuer à titre général en un approvisionnement énergique local et durable. La production énergétique suisse doit en effet répondre aux exigences du principe du développement durable (art. 73 Cst.), qui vise à établir sur le long terme un rapport équilibré entre, d'une part, la nature et sa capacité de renouvellement, et, d'autre part, la sollicitation de cette nature par l'homme (cf. arrêt 1C_573/2018 du 24 novembre 2021, consid. 13.6, destiné à la publication).
Il n'est ainsi pas adéquat de limiter l'examen au seul bénéfice d'une certification, Minergie-P ou -A en l'espèce, du bâtiment à construire. On ne peut pas réduire la portée de l'art. 18a al. 4 LAT aux standards posés pour des labels de construction. Ceux-ci, s'ils permettent de donner une idée de l'efficience énergétique d'un bâtiment, sont au demeurant basés sur différents paramètres (l'isolation du bâtiment, l'éventuel recours à d'autres énergies renouvelables, etc.), de sorte qu'ils ne reflètent pas nécessairement, dans le cadre d'une application de la disposition fédérale en cause, l'intérêt à une utilisation de l'énergie solaire.
3.2.3. En l'occurrence, conformément à ce qui a été constaté ci-dessus, le projet litigieux permet une production d'énergie de 30,94 MWh/an, alors que la variante 2020 produit 24,22 MWh/an (-21,7 % environ), soit un degré d'autarcie de 46,4 % pour la variante 2017 et un degré d'autarcie de 38,3 % pour la variante 2020. Aussi, au contraire de ce qu'expose la municipalité et de ce qu'a retenu la cour cantonale, la différence en matière de production d'énergie solaire ne saurait être qualifiée de faible.
A l'inverse, l'argument esthétique avancé par les autorités communales, qui ont critiqué l'uniformité de l'implantation des immeubles projetés et du bâtiment autorisé en 2016 donnant au projet l'aspect visuel d'une barre d'immeubles à l'entrée du hameau, est mince. L'arrêt attaqué ne dit pas si cette impression de barre est celle d'une vue du sud ou de l'ouest. Il ne précise pas quelles façades seront effectivement perçues par le passant. Or, selon les plans figurant au dossier, vu du sud, soit de la route principale accédant au hameau, il apparaît que la partie visible du projet est la seule façade du bâtiment C, le bâtiment B étant moins large et, ne dépassant ni d'un côté ni de l'autre, par conséquent masqué. En outre, quand bien même le bâtiment C forme un rectangle, sa façade longue mesure moins du double de sa façade courte, de sorte qu'il n'est pas manifeste que la vue sur une façade longue (du bâtiment B dans la variante litigieuse) soit plus agressive qu'une vue sur deux façades courtes (des bâtiments B et C dans la variante 2020). Quant à la vue générale sur le projet depuis l'ouest, même si, selon la vue en coupe figurant au dossier, elle souligne effectivement l'alignement des trois immeubles, elle ne choque pas, s'agissant précisément des façades courtes. Cet alignement est au demeurant atténué par le fait que les trois bâtiments ne sont pas strictement parallèles mais ont des angles d'implantation légèrement différents les uns des autres.
La cour cantonale fait en outre référence à "l'avantage [avec la variante 2020] d'obtenir des orientations variées ou en grappe", conforme à la "caractéristique de cette partie du village". Un tel motif est toutefois peu opportun, voire confine à l'arbitraire, dans un contexte où l'autorité communale avait justifié le refus du projet en premier lieu du fait qu'il ne respectait pas la supposée unique orientation de toitures réglementaire. Or, ainsi qu'il en a été jugé précédemment, la réglementation communale permet en réalité deux types d'orientations de toitures perpendiculaires l'une à l'autre; il est dès lors particulièrement délicat d'opposer à la constructrice comme principal motif de refus le souhait d'avoir une diversité dans l'orientation des faîtes.
En tout état, il n'est pas question ici d'un projet à l'architecture atypique en raison du recours à l'énergie solaire, ni d'environs particulièrement remarquables dont il faudrait préserver les caractéristiques qui risqueraient d'être altérées par les nouveaux bâtiments. Par la seule mention d'un problème d'intégration des nouvelles constructions au site en raison de l'orientation des bâtiments (ni les volumes, ni le traitement architectural ne sont remis en question) - conforme à la réglementation communale - la municipalité ne démontre pas une atteinte particulièrement importante à l'esthétique du quartier.
Dans ce contexte, les maigres arguments esthétiques ne sauraient l'emporter au détriment de l'intérêt à la production d'énergie solaire au motif qu'il existerait une alternative moins dommageable esthétiquement et jugée - à tort - comparable sous l'angle énergétique. En effet, d'un côté les arguments esthétiques sont peu convaincants et, de l'autre, la production d'énergie solaire de l'alternative supposée comparable est en réalité inférieure de plus de 20 %. A cela s'ajoute, comme la recourante a pu le démontrer à satisfaction de droit, que l'ombre portée du projet réduira la production d'électricité sur le bâtiment A déjà existant (cf. supra consid. 2.2.2). Or, conformément à la lettre et à l'esprit de l'art. 18a al. 4 LAT, cet aspect du projet doit lui aussi être pris en compte dans la pesée des intérêts en présence.
3.3. En définitive, les motifs esthétiques avancés sont insuffisants pour justifier le refus du projet permettant une production optimale d'énergie solaire. L'autorisation de construire doit par conséquent être délivrée.
4.
Il résulte de ce qui précède que le recours doit être admis, l'arrêt cantonal du 9 juin 2021 ainsi que la décision communale du 20 juin 2018 annulés, et le dossier retourné à la commune pour délivrance de l'autorisation de construire. Le dossier sera adressé dans un premier temps à la cour cantonale pour nouvelle décision sur les frais et dépens cantonaux.
Conformément à l'art. 66 al. 4 LTF, il n'est pas perçu de frais judiciaires pour la procédure fédérale. La Commune de Cossonay versera en revanche des dépens à la recourante, qui obtient gain de cause avec l'aide de mandataires professionnels (art. 68 al. 1 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis. L'arrêt attaqué est annulé, de même que la décision rendue par la Commune de Cossonay le 20 juin 2018.
2.
La cause est renvoyée à la Cour de droit administratif et public du Tribunal cantonal du canton de Vaud pour nouvelle décision sur les frais et dépens cantonaux, puis à la Commune de Cossonay pour délivrance de l'autorisation de construire requise.
3.
Il n'est pas perçu de frais judiciaires pour la procédure devant le Tribunal fédéral.
4.
Une indemnité de dépens de 4'000 fr. est accordée à la recourante pour la procédure devant le Tribunal fédéral, à la charge de la Commune de Cossonay.
5.
Le présent arrêt est communiqué aux mandataires de la recourante et de la Municipalité de Cossonay, ainsi qu'au Tribunal cantonal du canton de Vaud, Cour de droit administratif et public.
Lausanne, le 25 février 2022
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président : Kneubühler
La Greffière : Sidi-Ali